packages feed

moonlight-linalg-0.1.0.0: src-laws/Moonlight/LinAlg/Effect/LawNames.hs

{-# LANGUAGE DerivingStrategies #-}

module Moonlight.LinAlg.Effect.LawNames
  ( LawName (..),
    allLawNames,
    lawName,
  )
where

import Data.Kind (Type)
import Moonlight.Core (IsLawName (..), constructorLawNameWithOverrides)

type LawName :: Type
data LawName
  = DenseAddAssociative
  | DenseAddCommutative
  | DenseMultiplyAssociative
  | DenseLeftDistributive
  | DenseRightDistributive
  | DenseTransposeInvolution
  | DenseTransposeProductReversal
  | DenseMapComposition
  | QRReconstructsInput
  | QROrthonormalColumns
  | CholeskyReconstructsSPD
  | SymmetricEigenReconstructs
  | SymmetricEigenOrthonormal
  | SymmetricEigenUncheckedPassesCertification
  | ThinSVDReconstructs
  | ThinSVDOrthonormalFactors
  | ThinSVDSingularValuesOrderedNonnegative
  | PLUReconstructsInput
  | RankKernelNullity
  | KernelVectorsAnnihilated
  | PackedLinearMapIdentity
  | PackedLinearMapComposition
  | GF2PackedInverseTwoSided
  | SmithDiagonalReconstructsInput
  | SmithDivisibilityChain
  | SmithWitnessesUnimodular
  | SmithDiagonalOnlyAgreesWithFull
  | BareissRankAgreesWithFieldRank
  | BareissDeterminantAgreesWithExterior
  | COOCSRRoundTrip
  | COOCSCRoundTrip
  | CSRCSCTransposeAgreement
  | CSRMatVecAgreesWithDense
  | CanonicalCSRCombinesDuplicates
  | GraphLaplacianSymmetricRowSumsZero
  | SelfAdjointCSRRejectsAsymmetry
  | ScaledOperatorAction
  | ShiftedIdentityAction
  | IC0FactorSolveRoundTrip
  | IC0RejectsNonpositivePivot
  | PreconditionedCGConvergesOnSPD
  | ArnoldiRelationHolds
  | ArnoldiBasisOrthonormal
  | LanczosProjectionTridiagonal
  | LanczosBasisOrthonormal
  | ThickRestartLockedPairsResidualBounded
  | SelectedPairsResidualBounded
  | SelectedPairsClusterOrthonormal
  | TridiagonalSelectedValuesAgreeWithAllPairs
  | DiagonalSpectralValuesExact
  | PathLaplacianSpectralValuesClosedForm
  | EigenRequestRejectsOversubscription
  | Vec3AddCommutativeAssociative
  | Vec3DotSymmetric
  | Vec3NormalizeUnit
  | AABBUnionCommutativeAssociative
  | AABBUnionContainsOperands
  | AABBIntersectionCommutative
  | SymmetricOuterApplyAgreement
  | GeometrySymmetricEigenReconstructs
  | GeometrySymmetricEigenOrthonormal
  | NetworkDeclarationOrderInvariant
  | RepeatedLoadsAccumulate
  | EquilibriumAssemblyCanonicalOrdering
  | EquilibriumSolutionResidualBounded
  | UnsupportedLoadProducesResidualViolation
  deriving stock (Bounded, Enum, Eq, Ord, Show)

instance IsLawName LawName where
  lawNameText = lawName

allLawNames :: [LawName]
allLawNames =
  [minBound .. maxBound]

lawName :: LawName -> String
lawName =
  constructorLawNameWithOverrides
    [ ("DenseAddAssociative", "linalg_dense_add_associative"),
      ("DenseAddCommutative", "linalg_dense_add_commutative"),
      ("DenseMultiplyAssociative", "linalg_dense_multiply_associative"),
      ("DenseLeftDistributive", "linalg_dense_left_distributive"),
      ("DenseRightDistributive", "linalg_dense_right_distributive"),
      ("DenseTransposeInvolution", "linalg_dense_transpose_involution"),
      ("DenseTransposeProductReversal", "linalg_dense_transpose_product_reversal"),
      ("DenseMapComposition", "linalg_dense_map_composition"),
      ("QRReconstructsInput", "linalg_decomposition_qr_reconstructs_input"),
      ("QROrthonormalColumns", "linalg_decomposition_qr_orthonormal_columns"),
      ("CholeskyReconstructsSPD", "linalg_decomposition_cholesky_reconstructs_spd"),
      ("SymmetricEigenReconstructs", "linalg_decomposition_symmetric_eigen_reconstructs"),
      ("SymmetricEigenOrthonormal", "linalg_decomposition_symmetric_eigen_orthonormal"),
      ("SymmetricEigenUncheckedPassesCertification", "linalg_decomposition_symmetric_eigen_unchecked_passes_certification"),
      ("ThinSVDReconstructs", "linalg_decomposition_thin_svd_reconstructs"),
      ("ThinSVDOrthonormalFactors", "linalg_decomposition_thin_svd_orthonormal_factors"),
      ("ThinSVDSingularValuesOrderedNonnegative", "linalg_decomposition_thin_svd_singular_values_ordered_nonnegative"),
      ("PLUReconstructsInput", "linalg_field_plu_reconstructs_input"),
      ("RankKernelNullity", "linalg_field_rank_kernel_nullity"),
      ("KernelVectorsAnnihilated", "linalg_field_kernel_vectors_annihilated"),
      ("PackedLinearMapIdentity", "linalg_gf2_packed_linear_map_identity"),
      ("PackedLinearMapComposition", "linalg_gf2_packed_linear_map_composition"),
      ("GF2PackedInverseTwoSided", "linalg_gf2_packed_inverse_two_sided"),
      ("SmithDiagonalReconstructsInput", "linalg_domain_smith_diagonal_reconstructs_input"),
      ("SmithDivisibilityChain", "linalg_domain_smith_divisibility_chain"),
      ("SmithWitnessesUnimodular", "linalg_domain_smith_witnesses_unimodular"),
      ("SmithDiagonalOnlyAgreesWithFull", "linalg_domain_smith_diagonal_only_agrees_with_full"),
      ("BareissRankAgreesWithFieldRank", "linalg_domain_bareiss_rank_agrees_with_field_rank"),
      ("BareissDeterminantAgreesWithExterior", "linalg_domain_bareiss_determinant_agrees_with_exterior"),
      ("COOCSRRoundTrip", "linalg_sparse_coo_csr_round_trip"),
      ("COOCSCRoundTrip", "linalg_sparse_coo_csc_round_trip"),
      ("CSRCSCTransposeAgreement", "linalg_sparse_csr_csc_transpose_agreement"),
      ("CSRMatVecAgreesWithDense", "linalg_sparse_csr_matvec_agrees_with_dense"),
      ("CanonicalCSRCombinesDuplicates", "linalg_sparse_canonical_csr_combines_duplicates"),
      ("GraphLaplacianSymmetricRowSumsZero", "linalg_sparse_graph_laplacian_symmetric_row_sums_zero"),
      ("SelfAdjointCSRRejectsAsymmetry", "linalg_sparse_self_adjoint_csr_rejects_asymmetry"),
      ("ScaledOperatorAction", "linalg_operator_scaled_operator_action"),
      ("ShiftedIdentityAction", "linalg_operator_shifted_identity_action"),
      ("IC0FactorSolveRoundTrip", "linalg_preconditioner_ic0_factor_solve_round_trip"),
      ("IC0RejectsNonpositivePivot", "linalg_preconditioner_ic0_rejects_nonpositive_pivot"),
      ("PreconditionedCGConvergesOnSPD", "linalg_preconditioner_preconditioned_cg_converges_on_spd"),
      ("ArnoldiRelationHolds", "linalg_krylov_spectral_arnoldi_relation_holds"),
      ("ArnoldiBasisOrthonormal", "linalg_krylov_spectral_arnoldi_basis_orthonormal"),
      ("LanczosProjectionTridiagonal", "linalg_krylov_spectral_lanczos_projection_tridiagonal"),
      ("LanczosBasisOrthonormal", "linalg_krylov_spectral_lanczos_basis_orthonormal"),
      ("ThickRestartLockedPairsResidualBounded", "linalg_krylov_spectral_thick_restart_locked_pairs_residual_bounded"),
      ("SelectedPairsResidualBounded", "linalg_krylov_spectral_selected_pairs_residual_bounded"),
      ("SelectedPairsClusterOrthonormal", "linalg_krylov_spectral_selected_pairs_cluster_orthonormal"),
      ("TridiagonalSelectedValuesAgreeWithAllPairs", "linalg_krylov_spectral_tridiagonal_selected_values_agree_with_all_pairs"),
      ("DiagonalSpectralValuesExact", "linalg_krylov_spectral_diagonal_spectral_values_exact"),
      ("PathLaplacianSpectralValuesClosedForm", "linalg_krylov_spectral_path_laplacian_spectral_values_closed_form"),
      ("EigenRequestRejectsOversubscription", "linalg_krylov_spectral_eigen_request_rejects_oversubscription"),
      ("Vec3AddCommutativeAssociative", "linalg_geometry_vec3_add_commutative_associative"),
      ("Vec3DotSymmetric", "linalg_geometry_vec3_dot_symmetric"),
      ("Vec3NormalizeUnit", "linalg_geometry_vec3_normalize_unit"),
      ("AABBUnionCommutativeAssociative", "linalg_geometry_aabb_union_commutative_associative"),
      ("AABBUnionContainsOperands", "linalg_geometry_aabb_union_contains_operands"),
      ("AABBIntersectionCommutative", "linalg_geometry_aabb_intersection_commutative"),
      ("SymmetricOuterApplyAgreement", "linalg_geometry_symmetric_outer_apply_agreement"),
      ("GeometrySymmetricEigenReconstructs", "linalg_geometry_symmetric_eigen_reconstructs"),
      ("GeometrySymmetricEigenOrthonormal", "linalg_geometry_symmetric_eigen_orthonormal"),
      ("NetworkDeclarationOrderInvariant", "linalg_statics_network_declaration_order_invariant"),
      ("RepeatedLoadsAccumulate", "linalg_statics_repeated_loads_accumulate"),
      ("EquilibriumAssemblyCanonicalOrdering", "linalg_statics_equilibrium_assembly_canonical_ordering"),
      ("EquilibriumSolutionResidualBounded", "linalg_statics_equilibrium_solution_residual_bounded"),
      ("UnsupportedLoadProducesResidualViolation", "linalg_statics_unsupported_load_produces_residual_violation")
    ]
    . show