Idris2Doc : Frex.Frex.Construction

Frex.Frex.Construction

Construct the free extension of a model over a setoid
Small print: the setoid's equivalence relation may not be decidable

The frex `a[s]` of a `pres`-model `a` over a setoid `s` is given
by the free model `F s` of the following presentation over the
setoid `s`. First, we add all the elements `x : U a` as constants
`Constant x : 0`. Then, we add the following evaluation equations
to the `pres` axioms:

  f (Constant x1, ..., Constant xn)
  = Constant $ a.Sem f (x1,..., xn)

Reexports

importpublic Frex.Free.Construction

Definitions

dataEvaluationSigOperation : Signature-> (0_ : Type) ->Nat->Type
Totality: total
Visibility: public export
Constructors:
Op : sig.OpWithArityn->EvaluationSigOperationsigan
Constant : a->EvaluationSigOperationsiga0
EvaluationSig : Signature-> (0_ : Type) ->Signature
Visibility: public export
withEvaluation : Showc=>Printersiga->Printer (EvaluationSigsigc) a
Visibility: export
EvalEmbed : (sig : Signature) ->sig~>EvaluationSigsiga
Visibility: public export
dataEvaluationAxiom : Signature->Type->Setoid->Type
Totality: total
Visibility: public export
Constructors:
Axiom : axioms->EvaluationAxiomsigaxiomsa
Evaluation : sig.OpWithArityn->Vectn (Ua) ->EvaluationAxiomsigaxiomsa
Assumption : (a.equivalence) .relationxy->EvaluationAxiomsigaxiomsa
EvaluationTheory : (pres : Presentation) -> (a : SetoidAlgebra (pres.signature)) ->EvaluationAxiom (pres.signature) (pres.Axiom) (casta) ->Equation (EvaluationSig (pres.signature) (Ua))
Visibility: public export
EvaluationPresentation : (pres : Presentation) ->SetoidAlgebra (pres.signature) ->Presentation
Visibility: public export
castEval : SetoidAlgebra (EvaluationSigsiga) ->SetoidAlgebrasig
Visibility: public export
lemma : {autoa : Algebrasig} -> (n : Nat) -> (f : (Finn->x)) -> (env : (x->Ua)) ->bindTerms (mapDone (tabulatef)) env=tabulate (env.f)
Visibility: export
lemma2 : {autoa : Algebrasig} -> (i : Finn) -> (ts : Vectn (Termsigx)) -> (env : (x->Ua)) ->indexi (bindTermstsenv) =bindTerm (indexits) env
Visibility: export
coherence : (a : SetoidAlgebra (EvaluationSigsigs)) -> (t : Termsigx) -> (env : (x->Ua)) ->a.Sem (castt) env= (castEvala) .Semtenv
Visibility: export
coherenceTerms : (a : SetoidAlgebra (EvaluationSigsigs)) -> (ts : Vectn (Termsigx)) -> (env : (x->Ua)) ->bindTerms (castTerms (EvalEmbedsig) ts) env=bindTermstsenv
Visibility: export
castEval : Model (EvaluationPresentationpresa) ->Modelpres
Visibility: public export
castEval : b~>c->castEvalb~>castEvalc
Visibility: public export
freeAsExtension : Free (EvaluationPresentationpres (a.Algebra)) s->Extensionas
Visibility: public export
.OverAlgebra : Extensionas->SetoidAlgebra ((EvaluationPresentationpres (a.Algebra)) .signature)
Visibility: public export
.OverAlgebraCoherence : (other : Extensionas) -> (env : (x->U (other.Model))) -> (t : Term (pres.signature) x) -> (castEval (other.OverAlgebra)) .Semtenv= (other.Model) .Semtenv
Visibility: export
OverAlgebraCoherenceAux : (other : Extensionas) -> (env : (x->U (other.Model))) -> (ts : Vectn (Term (pres.signature) x)) ->bindTermstsenv=bindTermstsenv
Visibility: export
OverAlgebraNop : (other : Extensionas) -> (xs : Vectn (Ua)) -> (env : (x->U (other.Model))) ->bindTerms (map (\x=>Call (MkOp (Constantx)) []) xs) env=map (((other.Embed) .H) .H) xs
Visibility: export
.Over : Extensionas->ModelOver (EvaluationPresentationpres (a.Algebra)) s
Visibility: public export
Extender : (fs : Free (EvaluationPresentationpres (a.Algebra)) s) ->Extender (freeAsExtensionfs)
Visibility: public export
Uniqueness : (fs : Free (EvaluationPresentationpres (a.Algebra)) s) ->Uniqueness (freeAsExtensionfs)
Visibility: public export
FrexByFree : Free (EvaluationPresentationpres (a.Algebra)) s->Frexas
Visibility: public export
Frex : (a : Modelpres) -> (s : Setoid) ->Frexas
Visibility: public export