Equations
- ISAR.instAddMatrix4 = { add := ISAR.add }
Equations
- ISAR.instNegMatrix4 = { neg := ISAR.neg }
Equations
- ISAR.instSubMatrix4 = { sub := ISAR.sub }
Convert a Matrix4 back to a 4x4 function over Fin 4.
Equations
- ISAR.fromMatrix4 M ⟨0, isLt⟩ ⟨0, isLt_1⟩ = M.m00
- ISAR.fromMatrix4 M ⟨0, isLt⟩ ⟨1, isLt_1⟩ = M.m01
- ISAR.fromMatrix4 M ⟨0, isLt⟩ ⟨2, isLt_1⟩ = M.m02
- ISAR.fromMatrix4 M ⟨0, isLt⟩ ⟨3, isLt_1⟩ = M.m03
- ISAR.fromMatrix4 M ⟨1, isLt⟩ ⟨0, isLt_1⟩ = M.m10
- ISAR.fromMatrix4 M ⟨1, isLt⟩ ⟨1, isLt_1⟩ = M.m11
- ISAR.fromMatrix4 M ⟨1, isLt⟩ ⟨2, isLt_1⟩ = M.m12
- ISAR.fromMatrix4 M ⟨1, isLt⟩ ⟨3, isLt_1⟩ = M.m13
- ISAR.fromMatrix4 M ⟨2, isLt⟩ ⟨0, isLt_1⟩ = M.m20
- ISAR.fromMatrix4 M ⟨2, isLt⟩ ⟨1, isLt_1⟩ = M.m21
- ISAR.fromMatrix4 M ⟨2, isLt⟩ ⟨2, isLt_1⟩ = M.m22
- ISAR.fromMatrix4 M ⟨2, isLt⟩ ⟨3, isLt_1⟩ = M.m23
- ISAR.fromMatrix4 M ⟨3, isLt⟩ ⟨0, isLt_1⟩ = M.m30
- ISAR.fromMatrix4 M ⟨3, isLt⟩ ⟨1, isLt_1⟩ = M.m31
- ISAR.fromMatrix4 M ⟨3, isLt⟩ ⟨2, isLt_1⟩ = M.m32
- ISAR.fromMatrix4 M ⟨3, isLt⟩ ⟨3, isLt_1⟩ = M.m33
Instances For
Theorem: converting a matrix to function and back is the identity.
Theorem: converting a function to matrix and back is the identity.
The ISK monoid: what ISK can represent under application (multiplication).
- I : ISKAlgebra I1
- S : ISKAlgebra S1
- K : ISKAlgebra K1
- zero : ISKAlgebra ISAR.zero
- mul (M1 M2 : Matrix4) (h1 : ISKAlgebra M1) (h2 : ISKAlgebra M2) : ISKAlgebra (M1 * M2)
Instances For
The full ISAR monoid: what requires R and A (dup and swap).
- I : BasisAlgebra I1
- R : BasisAlgebra R1
- A : BasisAlgebra A1
- S : BasisAlgebra S1
- zero : BasisAlgebra ISAR.zero
- mul (M1 M2 : Matrix4) (h1 : BasisAlgebra M1) (h2 : BasisAlgebra M2) : BasisAlgebra (M1 * M2)
Instances For
Constructive term signature valuation function mapping ITerm directly to Matrix4.
Equations
- ISAR.term_signature_val (ISAR.ITerm.var a) = ISAR.zero
- ISAR.term_signature_val ISAR.ITerm.norm = ISAR.I1
- ISAR.term_signature_val ISAR.ITerm.sₛ = ISAR.S1
- ISAR.term_signature_val ISAR.ITerm.konst = ISAR.I1 * ISAR.R1 * ISAR.A1 * ISAR.S1
- ISAR.term_signature_val ISAR.ITerm.dup = ISAR.A1
- ISAR.term_signature_val ISAR.ITerm.swap = ISAR.R1
- ISAR.term_signature_val ISAR.ITerm.comp = ISAR.zero
- ISAR.term_signature_val (f · x_1) = ISAR.term_signature_val f * ISAR.term_signature_val x_1
Instances For
Bijective term signature mapping in the substrate.
Equations
Instances For
The matrix representative of a substrate term.
Equations
Instances For
Theorem: The identity term I maps to I1.
Theorem: The combinator S maps to S1.
Theorem: Application of terms corresponds to matrix multiplication.
Theorem: The zero matrix is constructively representable by applying konst to konst.
Theorem: Rotation matrix R1 is unreachable in the pure ISK fragment.
Theorem: Adjacency matrix A1 is unreachable in the pure ISK fragment.
Expressive completeness of the pure functional ISK fragment monoid. Any matrix generated in ISKAlgebra is representable by an ISKSubtype term.
Expressive completeness of the full ISAR monoid. Any matrix generated in BasisAlgebra is representable by an ITerm.