whiley_test_file 0.6.2

An API for manipulating test files for the Whiley Programming Language.
Documentation
original.name="ConstrainedList_Valid_23"
======
>>> main.whiley


type Matrix is (int[][] rows)
    where all {
        i in 0 .. |rows|, j in 0 .. |rows| | |rows[i]| == |rows[j]|
    }

function run(Matrix A, Matrix B) -> Matrix
requires (|A| > 0) && ((|B| > 0) && (|B| == |A[0]|)):
    int[][] C = [[]; |A|]
    int i = 0
    while i < |A|
    where i >= 0 && |C| == |A|
    where all { k in 0..i | |C[k]| == |B[0]| }:
        int[] row = [0; |B[0]|]
        int j = 0
        while j < |B[0]| where j >= 0 && |row| == |B[0]|:
            int r = 0
            int k = 0 
            while k < |B| where k >= 0:
                r = r + (A[i][k] * B[k][j])
                k = k + 1            
            row[j] = r
            j = j + 1        
        C[i] = row
        i = i + 1
    return (Matrix) C

public export method test() :
    Matrix m1 = [[1, 2], [3, 4]]
    Matrix m2 = [[5, 6], [7, 8]]
    Matrix m3 = run(m1, m2)
    assume m3 == [[19, 22], [43, 50]]

---