Documentation

Auto.Embedding.LamSystem

@[reducible]
Equations
Instances For
    def Auto.Embedding.Lam.LamWF.generalizeTy {ltv : LamTyVal} {lctx : NatLamSort} {t : LamTerm} {s : LamSort} (wf : LamWF ltv { lctx := lctx, rterm := t, rty := s }) :
    (s : LamSort) × LamWF ltv { lctx := lctx, rterm := t, rty := s }
    Equations
    Instances For
      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            @[reducible, inline]
            abbrev Auto.Embedding.Lam.LamValid (lval : LamValuation) (lctx : NatLamSort) (t : LamTerm) :
            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                @[reducible, inline]
                abbrev Auto.Embedding.Lam.LamEquiv (lval : LamValuation) (lctx : NatLamSort) (rty : LamSort) (t₁ t₂ : LamTerm) :
                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  def Auto.Embedding.Lam.LamThmEquiv (lval : LamValuation) (lctx : List LamSort) (rty : LamSort) (t₁ t₂ : LamTerm) :
                  Equations
                  Instances For
                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For

                        Generic conversions like clausification satisfy LamGenConv

                        Equations
                        Instances For

                          Generic conversions like eta expansion satisfy LamGenConvWith

                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For
                            Equations
                            • One or more equations did not get rendered due to their size.
                            Instances For

                              Apply conversion theorem at a given position in t The conversion should only be ones that satisfy LamGenConv

                              Equations
                              Instances For
                                Equations
                                Instances For
                                  theorem Auto.Embedding.Lam.LamTerm.rwGenAll_lam {conv : LamTermOption LamTerm} {s : LamSort} {body : LamTerm} :
                                  rwGenAll conv (lam s body) = match conv (lam s body) with | some t' => some t' | none => (rwGenAll conv body).bind fun (x : LamTerm) => some (lam s x)
                                  theorem Auto.Embedding.Lam.LamTerm.rwGenAll_app {conv : LamTermOption LamTerm} {s : LamSort} {fn arg : LamTerm} :
                                  rwGenAll conv (app s fn arg) = match conv (app s fn arg) with | some t' => some t' | none => match rwGenAll conv fn, rwGenAll conv arg with | some fn', some arg' => some (app s fn' arg') | x, x_1 => none

                                  Apply conversion theorem at a given position in t The conversion should only be ones that satisfy LamGenConvWith

                                  Equations
                                  Instances For
                                    Equations
                                    Instances For
                                      @[reducible]
                                      Equations
                                      Instances For
                                        theorem Auto.Embedding.Lam.LamTerm.rwGenAllWith_atom {conv : LamSortLamTermOption LamTerm} {s : LamSort} {n : Nat} :
                                        rwGenAllWith conv s (atom n) = some ((conv s (atom n)).getD (atom n))
                                        theorem Auto.Embedding.Lam.LamTerm.rwGenAllWith_etom {conv : LamSortLamTermOption LamTerm} {s : LamSort} {n : Nat} :
                                        rwGenAllWith conv s (etom n) = some ((conv s (etom n)).getD (etom n))
                                        theorem Auto.Embedding.Lam.LamTerm.rwGenAllWith_bvar {conv : LamSortLamTermOption LamTerm} {s : LamSort} {n : Nat} :
                                        rwGenAllWith conv s (bvar n) = some ((conv s (bvar n)).getD (bvar n))
                                        theorem Auto.Embedding.Lam.LamTerm.rwGenAllWith_lam {conv : LamSortLamTermOption LamTerm} {rty s : LamSort} {body : LamTerm} :
                                        rwGenAllWith conv rty (lam s body) = match conv rty (lam s body) with | some t' => some t' | none => match rty with | a.func resTy => (rwGenAllWith conv resTy body).bind fun (x : LamTerm) => some (lam s x) | x => none
                                        theorem Auto.Embedding.Lam.LamTerm.rwGenAllWith_app {conv : LamSortLamTermOption LamTerm} {rty s : LamSort} {fn arg : LamTerm} :
                                        rwGenAllWith conv rty (app s fn arg) = match conv rty (app s fn arg) with | some t' => some t' | none => match rwGenAllWith conv (s.func rty) fn, rwGenAllWith conv s arg with | some fn', some arg' => some (app s fn' arg') | x, x_1 => none

                                        Determine whether a position is negative / whether a position is positive

                                        Equations
                                        Instances For
                                          noncomputable def Auto.Embedding.Lam.LamNonempty.get {tyVal : NatType u_1} {s : LamSort} (h : LamNonempty tyVal s) :
                                          Equations
                                          Instances For
                                            theorem Auto.Embedding.Lam.LamValid_substLCtxRecWF {lctx : NatLamSort} {t : LamTerm} {lval : LamValuation} (lctx' : NatLamSort) (heq : ∀ (n : Nat), lctx' n = lctx n) {wf : LamWF lval.toLamTyVal { lctx := lctx, rterm := t, rty := LamSort.base LamBaseSort.prop }} :
                                            (∀ (lctxTerm : (n : Nat) → LamSort.interp lval.tyVal (lctx n)), (LamWF.interp lval lctx lctxTerm wf).down) ∀ (lctxTerm' : (n : Nat) → LamSort.interp lval.tyVal (lctx' n)), (LamWF.interp lval lctx' lctxTerm' ( wf)).down
                                            @[irreducible]
                                            def Auto.Embedding.Lam.LamWF.ofExistsLamWF {ltv : LamTyVal} {lctx : NatLamSort} {t : LamTerm} {s : LamSort} {p : Prop} (H : (x : LamWF ltv { lctx := lctx, rterm := t, rty := s }), p) :
                                            LamWF ltv { lctx := lctx, rterm := t, rty := s }
                                            Equations
                                            Instances For
                                              @[irreducible]
                                              def Auto.Embedding.Lam.LamThmWF.ofLamThmWFP {lval : LamValuation} {lctx : List LamSort} {s : LamSort} {t : LamTerm} (H : LamThmWFP lval lctx s t) :
                                              LamThmWF lval lctx s t
                                              Equations
                                              Instances For
                                                theorem Auto.Embedding.Lam.LamThmWFP.ofLamThmWF {lval : LamValuation} {lctx : List LamSort} {s : LamSort} {t : LamTerm} (H : LamThmWF lval lctx s t) :
                                                LamThmWFP lval lctx s t
                                                Equations
                                                • One or more equations did not get rendered due to their size.
                                                Instances For
                                                  @[irreducible]
                                                  def Auto.Embedding.Lam.LamThmWF.ofLamThmWFCheck? {lval : LamValuation} {lctx : List LamSort} {rty : LamSort} {t : LamTerm} (h : LamTerm.lamThmWFCheck? lval.toLamTyVal lctx t = some rty) :
                                                  LamThmWF lval lctx rty t
                                                  Equations
                                                  • One or more equations did not get rendered due to their size.
                                                  Instances For
                                                    theorem Auto.Embedding.Lam.LamThmWFD.ofLamThmWF {lval : LamValuation} {lctx : List LamSort} {rty : LamSort} {t : LamTerm} (H : LamThmWF lval lctx rty t) :
                                                    LamThmWFD lval lctx rty t
                                                    @[irreducible]
                                                    def Auto.Embedding.Lam.LamThmWF.ofLamThmWFD {lval : LamValuation} {lctx : List LamSort} {rty : LamSort} {t : LamTerm} (H : LamThmWFD lval lctx rty t) :
                                                    LamThmWF lval lctx rty t
                                                    Equations
                                                    Instances For
                                                      theorem Auto.Embedding.Lam.LamValid.eVarIrrelevance (lval₁ lval₂ : LamValuation) {lctxTy₁ lctxTy₂ : NatLamSort} {t : LamTerm} (hLamVarTy : lval₁.lamVarTy = lval₂.lamVarTy) (hLamILTy : lval₁.lamILTy = lval₂.lamILTy) (hTyVal : lval₁.tyVal lval₂.tyVal) (hVarVal : lval₁.varVal lval₂.varVal) (hILVal : lval₁.ilVal lval₂.ilVal) (hLCtxTy : lctxTy₁ = lctxTy₂) (hirr : ∀ (n : Nat), n < t.maxEVarSucclval₁.lamEVarTy n = lval₂.lamEVarTy n lval₁.eVarVal n lval₂.eVarVal n) (hValid : LamValid lval₁ lctxTy₁ t) :
                                                      LamValid lval₂ lctxTy₂ t
                                                      theorem Auto.Embedding.Lam.LamThmValid.eVarIrrelevance (lval₁ lval₂ : LamValuation) {lctx₁ lctx₂ : List LamSort} {t : LamTerm} (hLamVarTy : lval₁.lamVarTy = lval₂.lamVarTy) (hLamILTy : lval₁.lamILTy = lval₂.lamILTy) (hTyVal : lval₁.tyVal lval₂.tyVal) (hVarVal : lval₁.varVal lval₂.varVal) (hILVal : lval₁.ilVal lval₂.ilVal) (hLCtxTy : lctx₁ = lctx₂) (hirr : ∀ (n : Nat), n < t.maxEVarSucclval₁.lamEVarTy n = lval₂.lamEVarTy n lval₁.eVarVal n lval₂.eVarVal n) :
                                                      LamThmValid lval₁ lctx₁ tLamThmValid lval₂ lctx₂ t
                                                      @[irreducible]
                                                      def Auto.Embedding.Lam.LamThmWF.ofLamThmEquiv_l {lval : LamValuation} {lctx : List LamSort} {rty : LamSort} {t₁ t₂ : LamTerm} (teq : LamThmEquiv lval lctx rty t₁ t₂) :
                                                      LamThmWF lval lctx rty t₁
                                                      Equations
                                                      Instances For
                                                        @[irreducible]
                                                        def Auto.Embedding.Lam.LamThmWF.ofLamThmEquiv_r {lval : LamValuation} {lctx : List LamSort} {rty : LamSort} {t₁ t₂ : LamTerm} (teq : LamThmEquiv lval lctx rty t₁ t₂) :
                                                        LamThmWF lval lctx rty t₂
                                                        Equations
                                                        Instances For
                                                          theorem Auto.Embedding.Lam.LamValid.ofLamEquiv {lval : LamValuation} {lctx : NatLamSort} {s : LamSort} {t₁ t₂ : LamTerm} (leq : LamEquiv lval lctx s t₁ t₂) :
                                                          LamValid lval lctx (LamTerm.mkEq s t₁ t₂)
                                                          theorem Auto.Embedding.Lam.LamThmValid.ofLamThmEquiv {lval : LamValuation} {s : LamSort} {t₁ t₂ : LamTerm} (lctx : List LamSort) (eT : LamThmEquiv lval lctx s t₁ t₂) :
                                                          LamThmValid lval lctx (LamTerm.mkEq s t₁ t₂)
                                                          def Auto.Embedding.Lam.LamThmWF.append {lval : LamValuation} {lctx : List LamSort} {rty : LamSort} {t : LamTerm} (H : LamThmWF lval lctx rty t) (ex : List LamSort) :
                                                          LamThmWF lval (lctx ++ ex) rty t
                                                          Equations
                                                          Instances For
                                                            def Auto.Embedding.Lam.LamThmWF.prepend {lval : LamValuation} {lctx : List LamSort} {rty : LamSort} {t : LamTerm} (H : LamThmWF lval lctx rty t) (ex : List LamSort) :
                                                            LamThmWF lval (ex ++ lctx) rty (LamTerm.bvarLifts ex.length t)
                                                            Equations
                                                            Instances For
                                                              theorem Auto.Embedding.Lam.LamValid.revert1F {lval : LamValuation} {s : LamSort} {lctx : NatLamSort} {t : LamTerm} (H : LamValid lval (pushLCtx s lctx) t) :
                                                              theorem Auto.Embedding.Lam.LamThmValid.revert1F {lval : LamValuation} {s : LamSort} {lctx : List LamSort} {t : LamTerm} (H : LamThmValid lval (s :: lctx) t) :
                                                              theorem Auto.Embedding.Lam.LamValid.intro1F {lval : LamValuation} {lctx : NatLamSort} {s : LamSort} {t : LamTerm} (H : LamValid lval lctx (LamTerm.mkForallEF s t)) :
                                                              LamValid lval (pushLCtx s lctx) t
                                                              theorem Auto.Embedding.Lam.LamThmValid.intro1F {lval : LamValuation} {lctx : List LamSort} {s : LamSort} {t : LamTerm} (H : LamThmValid lval lctx (LamTerm.mkForallEF s t)) :
                                                              LamThmValid lval (s :: lctx) t
                                                              theorem Auto.Embedding.Lam.LamValid.eqForallEF {lval : LamValuation} {lctx : NatLamSort} {s : LamSort} {t : LamTerm} :
                                                              LamValid lval lctx (LamTerm.mkForallEF s t) LamValid lval (pushLCtx s lctx) t
                                                              theorem Auto.Embedding.Lam.LamWF.interp_eqForallEH {lctx : NatLamSort} {t : LamTerm} {argTy : LamSort} {lval : LamValuation} {lctxTerm : (n : Nat) → LamSort.interp lval.tyVal (lctx n)} {wf : LamWF lval.toLamTyVal { lctx := lctx, rterm := t, rty := argTy.func (LamSort.base LamBaseSort.prop) }} :
                                                              (interp lval lctx lctxTerm wf.mkForallE).down = ∀ (x : LamSort.interp lval.tyVal argTy), (interp lval (pushLCtx argTy lctx) (pushLCtxDep x lctxTerm) (ofApp argTy (bvarLift t wf) pushLCtx_ofBVar)).down
                                                              theorem Auto.Embedding.Lam.LamValid.revert1H {lval : LamValuation} {s : LamSort} {lctx : NatLamSort} {t : LamTerm} (H : LamValid lval (pushLCtx s lctx) (LamTerm.app s t.bvarLift (LamTerm.bvar 0))) :
                                                              LamValid lval lctx (LamTerm.mkForallE s t)
                                                              theorem Auto.Embedding.Lam.LamValid.intro1H {lval : LamValuation} {lctx : NatLamSort} {s : LamSort} {t : LamTerm} (H : LamValid lval lctx (LamTerm.mkForallE s t)) :
                                                              theorem Auto.Embedding.Lam.LamThmValid.append {lval : LamValuation} {lctx : List LamSort} {t : LamTerm} (H : LamThmValid lval lctx t) (ex : List LamSort) :
                                                              LamThmValid lval (lctx ++ ex) t
                                                              theorem Auto.Embedding.Lam.LamValid.prepend {lval : LamValuation} {lctx : NatLamSort} {t : LamTerm} (H : LamValid lval lctx t) (ex : List LamSort) :
                                                              theorem Auto.Embedding.Lam.LamThmValid.prepend {lval : LamValuation} {lctx : List LamSort} {t : LamTerm} (H : LamThmValid lval lctx t) (ex : List LamSort) :
                                                              LamThmValid lval (ex ++ lctx) (LamTerm.bvarLifts ex.length t)
                                                              theorem Auto.Embedding.Lam.LamEquiv.ofLamValid {lval : LamValuation} {lctx : NatLamSort} {s : LamSort} {t₁ t₂ : LamTerm} (heq : LamValid lval lctx (LamTerm.mkEq s t₁ t₂)) :
                                                              LamEquiv lval lctx s t₁ t₂
                                                              theorem Auto.Embedding.Lam.LamEquiv.ofLamValidSymm {lval : LamValuation} {lctx : NatLamSort} {s : LamSort} {t₁ t₂ : LamTerm} (heq : LamValid lval lctx (LamTerm.mkEq s t₁ t₂)) :
                                                              LamEquiv lval lctx s t₂ t₁
                                                              theorem Auto.Embedding.Lam.LamThmEquiv.ofLamThmValid {lval : LamValuation} {s : LamSort} {t₁ t₂ : LamTerm} (lctx : List LamSort) (heq : LamThmValid lval lctx (LamTerm.mkEq s t₁ t₂)) :
                                                              LamThmEquiv lval lctx s t₁ t₂
                                                              theorem Auto.Embedding.Lam.LamEquiv.eqLamValid {lval : LamValuation} {lctx : NatLamSort} {s : LamSort} {t₁ t₂ : LamTerm} :
                                                              LamEquiv lval lctx s t₁ t₂ = LamValid lval lctx (LamTerm.mkEq s t₁ t₂)
                                                              theorem Auto.Embedding.Lam.LamThmEquiv.eqLamThmValid {lval : LamValuation} {s : LamSort} {t₁ t₂ : LamTerm} (lctx : List LamSort) :
                                                              LamThmEquiv lval lctx s t₁ t₂ = LamThmValid lval lctx (LamTerm.mkEq s t₁ t₂)
                                                              theorem Auto.Embedding.Lam.LamValid.mpLamEquiv {lval : LamValuation} {lctx : NatLamSort} {p₁ : LamTerm} {s : LamSort} {p₂ : LamTerm} (hp : LamValid lval lctx p₁) (hequiv : LamEquiv lval lctx s p₁ p₂) :
                                                              LamValid lval lctx p₂
                                                              theorem Auto.Embedding.Lam.LamThmValid.mpLamThmEquiv {lval : LamValuation} {lctx : List LamSort} {p₁ p₂ : LamTerm} (hequiv : LamThmEquiv lval lctx (LamSort.base LamBaseSort.prop) p₁ p₂) (hp : LamThmValid lval lctx p₁) :
                                                              LamThmValid lval lctx p₂
                                                              theorem Auto.Embedding.Lam.LamEquiv.refl {lctx : NatLamSort} {t : LamTerm} {s : LamSort} {lval : LamValuation} (wf : LamWF lval.toLamTyVal { lctx := lctx, rterm := t, rty := s }) :
                                                              LamEquiv lval lctx s t t
                                                              theorem Auto.Embedding.Lam.LamThmEquiv.refl {lval : LamValuation} {lctx : List LamSort} {s : LamSort} {t : LamTerm} (wf : LamThmWF lval lctx s t) :
                                                              LamThmEquiv lval lctx s t t
                                                              theorem Auto.Embedding.Lam.LamEquiv.eq {lctx : NatLamSort} {t₁ : LamTerm} {s : LamSort} {t₂ : LamTerm} {lval : LamValuation} (wf : LamWF lval.toLamTyVal { lctx := lctx, rterm := t₁, rty := s }) (heq : t₁ = t₂) :
                                                              LamEquiv lval lctx s t₁ t₂
                                                              theorem Auto.Embedding.Lam.LamThmEquiv.eq {lval : LamValuation} {lctx : List LamSort} {s : LamSort} {t₁ t₂ : LamTerm} (wf : LamThmWF lval lctx s t₁) (heq : t₁ = t₂) :
                                                              LamThmEquiv lval lctx s t₁ t₂
                                                              theorem Auto.Embedding.Lam.LamGenEquiv.eq {t₁ t₂ : LamTerm} {lval : LamValuation} (heq : t₁ = t₂) :
                                                              LamGenEquiv lval t₁ t₂
                                                              theorem Auto.Embedding.Lam.LamEquiv.symm {lval : LamValuation} {lctx : NatLamSort} {s : LamSort} {a b : LamTerm} (e : LamEquiv lval lctx s a b) :
                                                              LamEquiv lval lctx s b a
                                                              theorem Auto.Embedding.Lam.LamThmEquiv.symm {lval : LamValuation} {lctx : List LamSort} {rty : LamSort} {a b : LamTerm} (e : LamThmEquiv lval lctx rty a b) :
                                                              LamThmEquiv lval lctx rty b a
                                                              theorem Auto.Embedding.Lam.LamEquiv.trans {lval : LamValuation} {lctx : NatLamSort} {s : LamSort} {a b c : LamTerm} (eab : LamEquiv lval lctx s a b) (ebc : LamEquiv lval lctx s b c) :
                                                              LamEquiv lval lctx s a c
                                                              theorem Auto.Embedding.Lam.LamEquiv.trans' {lval : LamValuation} {lctx : NatLamSort} {s : LamSort} {a b : LamTerm} {s' : LamSort} {c : LamTerm} (eab : LamEquiv lval lctx s a b) (ebc : LamEquiv lval lctx s' b c) :
                                                              LamEquiv lval lctx s a c
                                                              theorem Auto.Embedding.Lam.LamThmEquiv.trans {lval : LamValuation} {lctx : List LamSort} {rty : LamSort} {a b c : LamTerm} (e₁ : LamThmEquiv lval lctx rty a b) (e₂ : LamThmEquiv lval lctx rty b c) :
                                                              LamThmEquiv lval lctx rty a c
                                                              theorem Auto.Embedding.Lam.LamEquiv.ofLam {lval : LamValuation} {w : LamSort} {lctx : NatLamSort} {s : LamSort} {a b : LamTerm} (e : LamEquiv lval (pushLCtx w lctx) s a b) :
                                                              LamEquiv lval lctx (w.func s) (LamTerm.lam w a) (LamTerm.lam w b)
                                                              theorem Auto.Embedding.Lam.LamThmEquiv.ofLam {lval : LamValuation} {w : LamSort} {lctx : List LamSort} {s : LamSort} {a b : LamTerm} (e : LamThmEquiv lval (w :: lctx) s a b) :
                                                              LamThmEquiv lval lctx (w.func s) (LamTerm.lam w a) (LamTerm.lam w b)
                                                              theorem Auto.Embedding.Lam.LamGenEquivWith.ofLam {lval : LamValuation} {s : LamSort} {a b : LamTerm} {w'' w : LamSort} (e : LamGenEquivWith lval s a b) :
                                                              LamGenEquivWith lval (w''.func s) (LamTerm.lam w a) (LamTerm.lam w b)
                                                              theorem Auto.Embedding.Lam.LamEquiv.fromLam {lval : LamValuation} {lctx : NatLamSort} {w s : LamSort} {a b : LamTerm} (e : LamEquiv lval lctx (w.func s) (LamTerm.lam w a) (LamTerm.lam w b)) :
                                                              LamEquiv lval (pushLCtx w lctx) s a b
                                                              theorem Auto.Embedding.Lam.LamThmEquiv.fromLam {lval : LamValuation} {lctx : List LamSort} {w s : LamSort} {a b : LamTerm} (e : LamThmEquiv lval lctx (w.func s) (LamTerm.lam w a) (LamTerm.lam w b)) :
                                                              LamThmEquiv lval (w :: lctx) s a b
                                                              theorem Auto.Embedding.Lam.LamEquiv.eqLam {lval : LamValuation} {w : LamSort} {lctx : NatLamSort} {s : LamSort} {a b : LamTerm} :
                                                              LamEquiv lval (pushLCtx w lctx) s a b = LamEquiv lval lctx (w.func s) (LamTerm.lam w a) (LamTerm.lam w b)
                                                              theorem Auto.Embedding.Lam.LamThmEquiv.eqLam {lval : LamValuation} {w : LamSort} {lctx : List LamSort} {s : LamSort} {a b : LamTerm} :
                                                              LamThmEquiv lval (w :: lctx) s a b = LamThmEquiv lval lctx (w.func s) (LamTerm.lam w a) (LamTerm.lam w b)
                                                              theorem Auto.Embedding.Lam.LamEquiv.congr {lval : LamValuation} {lctx : NatLamSort} {argTy resTy : LamSort} {fn₁ fn₂ arg₁ arg₂ : LamTerm} (eFn : LamEquiv lval lctx (argTy.func resTy) fn₁ fn₂) (eArg : LamEquiv lval lctx argTy arg₁ arg₂) :
                                                              LamEquiv lval lctx resTy (LamTerm.app argTy fn₁ arg₁) (LamTerm.app argTy fn₂ arg₂)
                                                              theorem Auto.Embedding.Lam.LamThmEquiv.congr {lval : LamValuation} {lctx : List LamSort} {argTy resTy : LamSort} {fn₁ fn₂ arg₁ arg₂ : LamTerm} (eFn : LamThmEquiv lval lctx (argTy.func resTy) fn₁ fn₂) (eArg : LamThmEquiv lval lctx argTy arg₁ arg₂) :
                                                              LamThmEquiv lval lctx resTy (LamTerm.app argTy fn₁ arg₁) (LamTerm.app argTy fn₂ arg₂)
                                                              theorem Auto.Embedding.Lam.LamGenEquiv.congr {lval : LamValuation} {fn₁ fn₂ arg₁ arg₂ : LamTerm} {argTy : LamSort} (eFn : LamGenEquiv lval fn₁ fn₂) (eArg : LamGenEquiv lval arg₁ arg₂) :
                                                              LamGenEquiv lval (LamTerm.app argTy fn₁ arg₁) (LamTerm.app argTy fn₂ arg₂)
                                                              theorem Auto.Embedding.Lam.LamGenEquivWith.congr {lval : LamValuation} {argTy resTy : LamSort} {fn₁ fn₂ arg₁ arg₂ : LamTerm} (eFn : LamGenEquivWith lval (argTy.func resTy) fn₁ fn₂) (eArg : LamGenEquivWith lval argTy arg₁ arg₂) :
                                                              LamGenEquivWith lval resTy (LamTerm.app argTy fn₁ arg₁) (LamTerm.app argTy fn₂ arg₂)
                                                              theorem Auto.Embedding.Lam.LamEquiv.congrFun {lval : LamValuation} {lctx : NatLamSort} {argTy resTy : LamSort} {fn₁ fn₂ arg : LamTerm} (eFn : LamEquiv lval lctx (argTy.func resTy) fn₁ fn₂) (wfArg : LamWF lval.toLamTyVal { lctx := lctx, rterm := arg, rty := argTy }) :
                                                              LamEquiv lval lctx resTy (LamTerm.app argTy fn₁ arg) (LamTerm.app argTy fn₂ arg)
                                                              theorem Auto.Embedding.Lam.LamThmEquiv.congrFun {lval : LamValuation} {lctx : List LamSort} {argTy resTy : LamSort} {fn₁ fn₂ arg : LamTerm} (eFn : LamThmEquiv lval lctx (argTy.func resTy) fn₁ fn₂) (wfArg : LamThmWF lval lctx argTy arg) :
                                                              LamThmEquiv lval lctx resTy (LamTerm.app argTy fn₁ arg) (LamTerm.app argTy fn₂ arg)
                                                              theorem Auto.Embedding.Lam.LamGenEquiv.congrFun {lval : LamValuation} {fn₁ fn₂ : LamTerm} {s : LamSort} {arg : LamTerm} (eFn : LamGenEquiv lval fn₁ fn₂) :
                                                              LamGenEquiv lval (LamTerm.app s fn₁ arg) (LamTerm.app s fn₂ arg)
                                                              theorem Auto.Embedding.Lam.LamGenEquivWith.congrFun {lval : LamValuation} {s resTy : LamSort} {fn₁ fn₂ arg : LamTerm} (eFn : LamGenEquivWith lval (s.func resTy) fn₁ fn₂) :
                                                              LamGenEquivWith lval resTy (LamTerm.app s fn₁ arg) (LamTerm.app s fn₂ arg)
                                                              theorem Auto.Embedding.Lam.LamEquiv.congrArg {lctx : NatLamSort} {fn : LamTerm} {argTy resTy : LamSort} {lval : LamValuation} {arg₁ arg₂ : LamTerm} (wfFn : LamWF lval.toLamTyVal { lctx := lctx, rterm := fn, rty := argTy.func resTy }) (eArg : LamEquiv lval lctx argTy arg₁ arg₂) :
                                                              LamEquiv lval lctx resTy (LamTerm.app argTy fn arg₁) (LamTerm.app argTy fn arg₂)
                                                              theorem Auto.Embedding.Lam.LamThmEquiv.congrArg {lval : LamValuation} {lctx : List LamSort} {argTy resTy : LamSort} {fn arg₁ arg₂ : LamTerm} (wfFn : LamThmWF lval lctx (argTy.func resTy) fn) (eArg : LamThmEquiv lval lctx argTy arg₁ arg₂) :
                                                              LamThmEquiv lval lctx resTy (LamTerm.app argTy fn arg₁) (LamTerm.app argTy fn arg₂)
                                                              theorem Auto.Embedding.Lam.LamGenEquiv.congrArg {lval : LamValuation} {arg₁ arg₂ : LamTerm} {s : LamSort} {fn : LamTerm} (eArg : LamGenEquiv lval arg₁ arg₂) :
                                                              LamGenEquiv lval (LamTerm.app s fn arg₁) (LamTerm.app s fn arg₂)
                                                              theorem Auto.Embedding.Lam.LamGenEquivWith.congrArg {lval : LamValuation} {s : LamSort} {arg₁ arg₂ : LamTerm} {resTy : LamSort} {fn : LamTerm} (eArg : LamGenEquivWith lval s arg₁ arg₂) :
                                                              LamGenEquivWith lval resTy (LamTerm.app s fn arg₁) (LamTerm.app s fn arg₂)
                                                              theorem Auto.Embedding.Lam.LamEquiv.congr_mkLamFN {lval : LamValuation} {lctx : NatLamSort} {s : LamSort} {t₁ t₂ : LamTerm} {l : List LamSort} :
                                                              LamEquiv lval (pushLCtxs l.reverse lctx) s t₁ t₂ LamEquiv lval lctx (s.mkFuncs l) (t₁.mkLamFN l) (t₂.mkLamFN l)
                                                              theorem Auto.Embedding.Lam.LamEquiv.congrs {lctx : NatLamSort} {fn₁ : LamTerm} {resTy : LamSort} {lval : LamValuation} {fnTy : LamSort} {fn₂ : LamTerm} {args : List (LamSort × LamTerm × LamTerm)} (wfApp : LamWF lval.toLamTyVal { lctx := lctx, rterm := fn₁.mkAppN (List.map (fun (x : LamSort × LamTerm × LamTerm) => match x with | (s, t₁, snd) => (s, t₁)) args), rty := resTy }) (hFn : LamEquiv lval lctx fnTy fn₁ fn₂) (hArgs : HList (fun (x : LamSort × LamTerm × LamTerm) => match x with | (s, arg₁, arg₂) => LamEquiv lval lctx s arg₁ arg₂) args) :
                                                              LamEquiv lval lctx resTy (fn₁.mkAppN (List.map (fun (x : LamSort × LamTerm × LamTerm) => match x with | (s, t₁, snd) => (s, t₁)) args)) (fn₂.mkAppN (List.map (fun (x : LamSort × LamTerm × LamTerm) => match x with | (s, fst, t₂) => (s, t₂)) args))
                                                              theorem Auto.Embedding.Lam.LamEquiv.congrArgs {lctx : NatLamSort} {fn : LamTerm} {resTy : LamSort} {lval : LamValuation} {args : List (LamSort × LamTerm × LamTerm)} (wfApp : LamWF lval.toLamTyVal { lctx := lctx, rterm := fn.mkAppN (List.map (fun (x : LamSort × LamTerm × LamTerm) => match x with | (s, t₁, snd) => (s, t₁)) args), rty := resTy }) (hArgs : HList (fun (x : LamSort × LamTerm × LamTerm) => match x with | (s, arg₁, arg₂) => LamEquiv lval lctx s arg₁ arg₂) args) :
                                                              LamEquiv lval lctx resTy (fn.mkAppN (List.map (fun (x : LamSort × LamTerm × LamTerm) => match x with | (s, t₁, snd) => (s, t₁)) args)) (fn.mkAppN (List.map (fun (x : LamSort × LamTerm × LamTerm) => match x with | (s, fst, t₂) => (s, t₂)) args))
                                                              theorem Auto.Embedding.Lam.LamEquiv.congrFunN {lctx : NatLamSort} {fn₁ : LamTerm} {resTy : LamSort} {lval : LamValuation} {fnTy : LamSort} {fn₂ : LamTerm} {args : List (LamSort × LamTerm)} (wfApp : LamWF lval.toLamTyVal { lctx := lctx, rterm := fn₁.mkAppN args, rty := resTy }) (hFn : LamEquiv lval lctx fnTy fn₁ fn₂) :
                                                              LamEquiv lval lctx resTy (fn₁.mkAppN args) (fn₂.mkAppN args)
                                                              theorem Auto.Embedding.Lam.LamEquiv.forall_congr {lval : LamValuation} {argTy : LamSort} {lctx : NatLamSort} {fn₁ fn₂ : LamTerm} (eFn : LamEquiv lval (pushLCtx argTy lctx) (LamSort.base LamBaseSort.prop) fn₁ fn₂) :
                                                              theorem Auto.Embedding.Lam.LamEquiv.not_imp_not {lctx : NatLamSort} {t₁ t₂ : LamTerm} {lval : LamValuation} (wf₁ : LamWF lval.toLamTyVal { lctx := lctx, rterm := t₁, rty := LamSort.base LamBaseSort.prop }) (wf₂ : LamWF lval.toLamTyVal { lctx := lctx, rterm := t₂, rty := LamSort.base LamBaseSort.prop }) :
                                                              LamEquiv lval lctx (LamSort.base LamBaseSort.prop) (t₁.mkNot.mkImp t₂.mkNot) (t₂.mkImp t₁)
                                                              theorem Auto.Embedding.Lam.LamEquiv.imp_swap {lctx : NatLamSort} {t₁ t₂ t₃ : LamTerm} {lval : LamValuation} (wf₁ : LamWF lval.toLamTyVal { lctx := lctx, rterm := t₁, rty := LamSort.base LamBaseSort.prop }) (wf₂ : LamWF lval.toLamTyVal { lctx := lctx, rterm := t₂, rty := LamSort.base LamBaseSort.prop }) (wf₃ : LamWF lval.toLamTyVal { lctx := lctx, rterm := t₃, rty := LamSort.base LamBaseSort.prop }) :
                                                              LamEquiv lval lctx (LamSort.base LamBaseSort.prop) (t₁.mkImp (t₂.mkImp t₃)) (t₂.mkImp (t₁.mkImp t₃))
                                                              theorem Auto.Embedding.Lam.LamValid.eq_refl {lctx : NatLamSort} {a : LamTerm} {s : LamSort} {lval : LamValuation} (wfA : LamWF lval.toLamTyVal { lctx := lctx, rterm := a, rty := s }) :
                                                              LamValid lval lctx (LamTerm.mkEq s a a)
                                                              theorem Auto.Embedding.Lam.LamValid.eq_eq {a b : LamTerm} {lctx : NatLamSort} {s : LamSort} {lval : LamValuation} (heq : a = b) (wfA : LamWF lval.toLamTyVal { lctx := lctx, rterm := a, rty := s }) :
                                                              LamValid lval lctx (LamTerm.mkEq s a b)
                                                              theorem Auto.Embedding.Lam.LamValid.eq_symm {lval : LamValuation} {lctx : NatLamSort} {s : LamSort} {a b : LamTerm} (H : LamValid lval lctx (LamTerm.mkEq s a b)) :
                                                              LamValid lval lctx (LamTerm.mkEq s b a)
                                                              theorem Auto.Embedding.Lam.LamValid.eq_trans {lval : LamValuation} {lctx : NatLamSort} {s : LamSort} {a b c : LamTerm} (H₁ : LamValid lval lctx (LamTerm.mkEq s a b)) (H₂ : LamValid lval lctx (LamTerm.mkEq s b c)) :
                                                              LamValid lval lctx (LamTerm.mkEq s a c)
                                                              theorem Auto.Embedding.Lam.LamValid.eq_congr {lval : LamValuation} {lctx : NatLamSort} {argTy resTy : LamSort} {fn₁ fn₂ arg₁ arg₂ : LamTerm} (HFn : LamValid lval lctx (LamTerm.mkEq (argTy.func resTy) fn₁ fn₂)) (HArg : LamValid lval lctx (LamTerm.mkEq argTy arg₁ arg₂)) :
                                                              LamValid lval lctx (LamTerm.mkEq resTy (LamTerm.app argTy fn₁ arg₁) (LamTerm.app argTy fn₂ arg₂))
                                                              theorem Auto.Embedding.Lam.LamValid.eq_congrFun {lval : LamValuation} {lctx : NatLamSort} {argTy resTy : LamSort} {fn₁ fn₂ arg : LamTerm} (HFn : LamValid lval lctx (LamTerm.mkEq (argTy.func resTy) fn₁ fn₂)) (wfArg₁ : LamWF lval.toLamTyVal { lctx := lctx, rterm := arg, rty := argTy }) :
                                                              LamValid lval lctx (LamTerm.mkEq resTy (LamTerm.app argTy fn₁ arg) (LamTerm.app argTy fn₂ arg))
                                                              theorem Auto.Embedding.Lam.LamValid.eq_congrArg {lval : LamValuation} {lctx : NatLamSort} {argTy : LamSort} {arg₁ arg₂ fn : LamTerm} {resTy : LamSort} (HArg : LamValid lval lctx (LamTerm.mkEq argTy arg₁ arg₂)) (wfFn₁ : LamWF lval.toLamTyVal { lctx := lctx, rterm := fn, rty := argTy.func resTy }) :
                                                              LamValid lval lctx (LamTerm.mkEq resTy (LamTerm.app argTy fn arg₁) (LamTerm.app argTy fn arg₂))
                                                              def Auto.Embedding.Lam.LamWF.funextF {ltv : LamTyVal} {lctx : NatLamSort} {argTy resTy : LamSort} {fn₁ fn₂ : LamTerm} {s : LamSort} (wf : LamWF ltv { lctx := lctx, rterm := LamTerm.mkEq (argTy.func resTy) fn₁ fn₂, rty := s }) :
                                                              LamWF ltv { lctx := pushLCtx argTy lctx, rterm := LamTerm.mkEq resTy (LamTerm.app argTy fn₁.bvarLift (LamTerm.bvar 0)) (LamTerm.app argTy fn₂.bvarLift (LamTerm.bvar 0)), rty := LamSort.base LamBaseSort.prop }
                                                              Equations
                                                              • One or more equations did not get rendered due to their size.
                                                              Instances For
                                                                def Auto.Embedding.Lam.LamWF.ofFunextF {ltv : LamTyVal} {argTy : LamSort} {lctx : NatLamSort} {resTy s : LamSort} {fn₁ fn₂ : LamTerm} (wf : LamWF ltv { lctx := pushLCtx argTy lctx, rterm := LamTerm.mkEq resTy (LamTerm.app argTy fn₁.bvarLift (LamTerm.bvar 0)) (LamTerm.app argTy fn₂.bvarLift (LamTerm.bvar 0)), rty := s }) :
                                                                LamWF ltv { lctx := lctx, rterm := LamTerm.mkEq (argTy.func resTy) fn₁ fn₂, rty := LamSort.base LamBaseSort.prop }
                                                                Equations
                                                                Instances For
                                                                  theorem Auto.Embedding.Lam.LamWF.interp_funext {lctx : NatLamSort} {argTy resTy : LamSort} {fn₁ fn₂ : LamTerm} {lval : LamValuation} {lctxTerm : (n : Nat) → LamSort.interp lval.tyVal (lctx n)} {wf₁ : LamWF lval.toLamTyVal { lctx := lctx, rterm := LamTerm.mkEq (argTy.func resTy) fn₁ fn₂, rty := LamSort.base LamBaseSort.prop }} {wf₂ : LamWF lval.toLamTyVal { lctx := pushLCtx argTy lctx, rterm := LamTerm.mkEq resTy (LamTerm.app argTy fn₁.bvarLift (LamTerm.bvar 0)) (LamTerm.app argTy fn₂.bvarLift (LamTerm.bvar 0)), rty := LamSort.base LamBaseSort.prop }} :
                                                                  (interp lval lctx lctxTerm wf₁).down = ∀ (x : LamSort.interp lval.tyVal argTy), (interp lval (pushLCtx argTy lctx) (pushLCtxDep x lctxTerm) wf₂).down
                                                                  theorem Auto.Embedding.Lam.LamEquiv.eqFunextF {lctx : NatLamSort} {argTy resTy : LamSort} {fn₁ fn₂ : LamTerm} {s : LamSort} {lval : LamValuation} (wfEq : LamWF lval.toLamTyVal { lctx := lctx, rterm := LamTerm.mkEq (argTy.func resTy) fn₁ fn₂, rty := s }) :
                                                                  LamEquiv lval lctx s (LamTerm.mkEq (argTy.func resTy) fn₁ fn₂) (LamTerm.mkForallEF argTy (LamTerm.mkEq resTy (LamTerm.app argTy fn₁.bvarLift (LamTerm.bvar 0)) (LamTerm.app argTy fn₂.bvarLift (LamTerm.bvar 0))))
                                                                  theorem Auto.Embedding.Lam.LamEquiv.eqFunextH {argTy : LamSort} {lctx : NatLamSort} {resTy : LamSort} {p₁ p₂ : LamTerm} {s : LamSort} {lval : LamValuation} (wfEq : LamWF lval.toLamTyVal { lctx := pushLCtx argTy lctx, rterm := LamTerm.mkEq resTy p₁ p₂, rty := s }) :
                                                                  LamEquiv lval lctx s (LamTerm.mkForallEF argTy (LamTerm.mkEq resTy p₁ p₂)) (LamTerm.mkEq (argTy.func resTy) (LamTerm.lam argTy p₁) (LamTerm.lam argTy p₂))
                                                                  theorem Auto.Embedding.Lam.LamEquiv.funextF {lval : LamValuation} {argTy : LamSort} {lctx : NatLamSort} {resTy : LamSort} {fn₁ fn₂ : LamTerm} (eAp : LamEquiv lval (pushLCtx argTy lctx) resTy (LamTerm.app argTy fn₁.bvarLift (LamTerm.bvar 0)) (LamTerm.app argTy fn₂.bvarLift (LamTerm.bvar 0))) :
                                                                  LamEquiv lval lctx (argTy.func resTy) fn₁ fn₂
                                                                  theorem Auto.Embedding.Lam.LamValid.funextF {lval : LamValuation} {argTy : LamSort} {lctx : NatLamSort} {resTy : LamSort} {fn₁ fn₂ : LamTerm} (HApp : LamValid lval (pushLCtx argTy lctx) (LamTerm.mkEq resTy (LamTerm.app argTy fn₁.bvarLift (LamTerm.bvar 0)) (LamTerm.app argTy fn₂.bvarLift (LamTerm.bvar 0)))) :
                                                                  LamValid lval lctx (LamTerm.mkEq (argTy.func resTy) fn₁ fn₂)
                                                                  theorem Auto.Embedding.Lam.LamValid.impLift {lval : LamValuation} {lctx : NatLamSort} {t₁ t₂ : LamTerm} (H : LamValid lval lctx (t₁.mkImp t₂)) :
                                                                  LamValid lval lctx t₁LamValid lval lctx t₂
                                                                  theorem Auto.Embedding.Lam.LamValid.imp_self {lctx : NatLamSort} {t : LamTerm} {lval : LamValuation} (wf : LamWF lval.toLamTyVal { lctx := lctx, rterm := t, rty := LamSort.base LamBaseSort.prop }) :
                                                                  LamValid lval lctx (t.mkImp t)
                                                                  theorem Auto.Embedding.Lam.LamValid.imp_trans {lctx : NatLamSort} {a b c : LamTerm} {lval : LamValuation} (wfa : LamWF lval.toLamTyVal { lctx := lctx, rterm := a, rty := LamSort.base LamBaseSort.prop }) (wfb : LamWF lval.toLamTyVal { lctx := lctx, rterm := b, rty := LamSort.base LamBaseSort.prop }) (wfc : LamWF lval.toLamTyVal { lctx := lctx, rterm := c, rty := LamSort.base LamBaseSort.prop }) :
                                                                  LamValid lval lctx ((a.mkImp b).mkImp ((b.mkImp c).mkImp (a.mkImp c)))
                                                                  theorem Auto.Embedding.Lam.LamValid.imp_trans' {lctx : NatLamSort} {a b c : LamTerm} {lval : LamValuation} (wfa : LamWF lval.toLamTyVal { lctx := lctx, rterm := a, rty := LamSort.base LamBaseSort.prop }) (wfb : LamWF lval.toLamTyVal { lctx := lctx, rterm := b, rty := LamSort.base LamBaseSort.prop }) (wfc : LamWF lval.toLamTyVal { lctx := lctx, rterm := c, rty := LamSort.base LamBaseSort.prop }) :
                                                                  LamValid lval lctx ((b.mkImp c).mkImp ((a.mkImp b).mkImp (a.mkImp c)))
                                                                  theorem Auto.Embedding.Lam.LamValid.and_imp_and_of_imp_imp {lctx : NatLamSort} {a₁ a₂ b₁ b₂ : LamTerm} {lval : LamValuation} (wfa₁ : LamWF lval.toLamTyVal { lctx := lctx, rterm := a₁, rty := LamSort.base LamBaseSort.prop }) (wfa₂ : LamWF lval.toLamTyVal { lctx := lctx, rterm := a₂, rty := LamSort.base LamBaseSort.prop }) (wfb₁ : LamWF lval.toLamTyVal { lctx := lctx, rterm := b₁, rty := LamSort.base LamBaseSort.prop }) (wfb₂ : LamWF lval.toLamTyVal { lctx := lctx, rterm := b₂, rty := LamSort.base LamBaseSort.prop }) :
                                                                  LamValid lval lctx ((a₁.mkImp a₂).mkImp ((b₁.mkImp b₂).mkImp ((a₁.mkAnd b₁).mkImp (a₂.mkAnd b₂))))
                                                                  theorem Auto.Embedding.Lam.LamValid.and_imp_and_of_left_imp {lctx : NatLamSort} {a₁ a₂ b : LamTerm} {lval : LamValuation} (wfa₁ : LamWF lval.toLamTyVal { lctx := lctx, rterm := a₁, rty := LamSort.base LamBaseSort.prop }) (wfa₂ : LamWF lval.toLamTyVal { lctx := lctx, rterm := a₂, rty := LamSort.base LamBaseSort.prop }) (wfb : LamWF lval.toLamTyVal { lctx := lctx, rterm := b, rty := LamSort.base LamBaseSort.prop }) :
                                                                  LamValid lval lctx ((a₁.mkImp a₂).mkImp ((a₁.mkAnd b).mkImp (a₂.mkAnd b)))
                                                                  theorem Auto.Embedding.Lam.LamValid.and_imp_and_of_right_imp {lctx : NatLamSort} {a b₁ b₂ : LamTerm} {lval : LamValuation} (wfa : LamWF lval.toLamTyVal { lctx := lctx, rterm := a, rty := LamSort.base LamBaseSort.prop }) (wfb₁ : LamWF lval.toLamTyVal { lctx := lctx, rterm := b₁, rty := LamSort.base LamBaseSort.prop }) (wfb₂ : LamWF lval.toLamTyVal { lctx := lctx, rterm := b₂, rty := LamSort.base LamBaseSort.prop }) :
                                                                  LamValid lval lctx ((b₁.mkImp b₂).mkImp ((a.mkAnd b₁).mkImp (a.mkAnd b₂)))
                                                                  theorem Auto.Embedding.Lam.LamValid.and_equiv {lval : LamValuation} {lctx : NatLamSort} {a b : LamTerm} :
                                                                  LamValid lval lctx (a.mkAnd b) LamValid lval lctx a LamValid lval lctx b
                                                                  theorem Auto.Embedding.Lam.LamValid.and_left {lctx : NatLamSort} {a b : LamTerm} {lval : LamValuation} (wfa : LamWF lval.toLamTyVal { lctx := lctx, rterm := a, rty := LamSort.base LamBaseSort.prop }) (wfb : LamWF lval.toLamTyVal { lctx := lctx, rterm := b, rty := LamSort.base LamBaseSort.prop }) :
                                                                  LamValid lval lctx ((a.mkAnd b).mkImp a)
                                                                  theorem Auto.Embedding.Lam.LamValid.and_right {lctx : NatLamSort} {a b : LamTerm} {lval : LamValuation} (wfa : LamWF lval.toLamTyVal { lctx := lctx, rterm := a, rty := LamSort.base LamBaseSort.prop }) (wfb : LamWF lval.toLamTyVal { lctx := lctx, rterm := b, rty := LamSort.base LamBaseSort.prop }) :
                                                                  LamValid lval lctx ((a.mkAnd b).mkImp b)
                                                                  theorem Auto.Embedding.Lam.LamValid.or_imp_or_of_imp_imp {lctx : NatLamSort} {a₁ a₂ b₁ b₂ : LamTerm} {lval : LamValuation} (wfa₁ : LamWF lval.toLamTyVal { lctx := lctx, rterm := a₁, rty := LamSort.base LamBaseSort.prop }) (wfa₂ : LamWF lval.toLamTyVal { lctx := lctx, rterm := a₂, rty := LamSort.base LamBaseSort.prop }) (wfb₁ : LamWF lval.toLamTyVal { lctx := lctx, rterm := b₁, rty := LamSort.base LamBaseSort.prop }) (wfb₂ : LamWF lval.toLamTyVal { lctx := lctx, rterm := b₂, rty := LamSort.base LamBaseSort.prop }) :
                                                                  LamValid lval lctx ((a₁.mkImp a₂).mkImp ((b₁.mkImp b₂).mkImp ((a₁.mkOr b₁).mkImp (a₂.mkOr b₂))))
                                                                  theorem Auto.Embedding.Lam.LamValid.or_imp_or_of_left_imp {lctx : NatLamSort} {a₁ a₂ b : LamTerm} {lval : LamValuation} (wfa₁ : LamWF lval.toLamTyVal { lctx := lctx, rterm := a₁, rty := LamSort.base LamBaseSort.prop }) (wfa₂ : LamWF lval.toLamTyVal { lctx := lctx, rterm := a₂, rty := LamSort.base LamBaseSort.prop }) (wfb : LamWF lval.toLamTyVal { lctx := lctx, rterm := b, rty := LamSort.base LamBaseSort.prop }) :
                                                                  LamValid lval lctx ((a₁.mkImp a₂).mkImp ((a₁.mkOr b).mkImp (a₂.mkOr b)))
                                                                  theorem Auto.Embedding.Lam.LamValid.or_imp_or_of_right_imp {lctx : NatLamSort} {a b₁ b₂ : LamTerm} {lval : LamValuation} (wfa : LamWF lval.toLamTyVal { lctx := lctx, rterm := a, rty := LamSort.base LamBaseSort.prop }) (wfb₁ : LamWF lval.toLamTyVal { lctx := lctx, rterm := b₁, rty := LamSort.base LamBaseSort.prop }) (wfb₂ : LamWF lval.toLamTyVal { lctx := lctx, rterm := b₂, rty := LamSort.base LamBaseSort.prop }) :
                                                                  LamValid lval lctx ((b₁.mkImp b₂).mkImp ((a.mkOr b₁).mkImp (a.mkOr b₂)))
                                                                  theorem Auto.Embedding.Lam.LamTerm.evarBounded_le {f : LamTermOption LamTerm} {bound bound' : Nat} (H : evarBounded f bound) (hle : bound bound') :
                                                                  evarBounded f bound'
                                                                  theorem Auto.Embedding.Lam.LamTerm.evarBounded_eqNone {f : LamTermOption LamTerm} {bound : Nat} (H : ∀ (t : LamTerm), f t = none) :
                                                                  evarBounded f bound
                                                                  theorem Auto.Embedding.Lam.LamTerm.evarBounded_rwGenAt {conv : LamTermOption LamTerm} {bound : Nat} {occ : List Bool} (H : evarBounded conv bound) :
                                                                  evarBounded (rwGenAt occ conv) bound
                                                                  theorem Auto.Embedding.Lam.LamGenConv.rwGenAt {lval : LamValuation} {conv : LamTermOption LamTerm} {occ : List Bool} (H : LamGenConv lval conv) :
                                                                  LamGenConv lval (LamTerm.rwGenAt occ conv)
                                                                  theorem Auto.Embedding.Lam.LamTerm.evarBounded_rwGenAtWith {conv : LamSortLamTermOption LamTerm} {bound : Nat} {occ : List Bool} (H : ∀ (s : LamSort), evarBounded (conv s) bound) (s : LamSort) :
                                                                  evarBounded (rwGenAtWith occ conv s) bound
                                                                  theorem Auto.Embedding.Lam.LamTerm.evarEquiv_rwGenAtWith {conv : LamSortLamTermOption LamTerm} {occ : List Bool} (H : ∀ (s : LamSort), evarEquiv (conv s)) (s : LamSort) :
                                                                  evarEquiv (rwGenAtWith occ conv s)
                                                                  theorem Auto.Embedding.Lam.LamTerm.evarBounded_rwGenAllWith {conv : LamSortLamTermOption LamTerm} {bound : Nat} (H : ∀ (s : LamSort), evarBounded (conv s) bound) (s : LamSort) :
                                                                  evarBounded (rwGenAllWith conv s) bound
                                                                  theorem Auto.Embedding.Lam.LamTerm.evarBounded_rwGenAtIfSign {n : Nat} {b : Bool} {occ : List Bool} {modify : LamTermOption LamTerm} (H : evarBounded modify n) :
                                                                  evarBounded (rwGenAtIfSign b occ modify) n
                                                                  theorem Auto.Embedding.Lam.LamGenModify.rwGenAtIfSign {lval : LamValuation} {weaken? weaken?' : Bool} {occ : List Bool} {modify : LamTermOption LamTerm} (H : LamGenModify lval modify weaken?) :
                                                                  LamGenModify lval (LamTerm.rwGenAtIfSign (weaken? == weaken?') occ modify) weaken?'
                                                                  Equations
                                                                  • One or more equations did not get rendered due to their size.
                                                                  Instances For
                                                                    def Auto.Embedding.Lam.LamWF.emb {ltv : LamTyVal} {lctx : NatLamSort} :
                                                                    LamWF ltv { lctx := lctx, rterm := LamTerm.emb, rty := LamSort.base LamBaseSort.prop }
                                                                    Equations
                                                                    • One or more equations did not get rendered due to their size.
                                                                    Instances For
                                                                      Equations
                                                                      • One or more equations did not get rendered due to their size.
                                                                      Instances For
                                                                        Equations
                                                                        • One or more equations did not get rendered due to their size.
                                                                        Instances For
                                                                          Equations
                                                                          • One or more equations did not get rendered due to their size.
                                                                          Instances For
                                                                            Equations
                                                                            • One or more equations did not get rendered due to their size.
                                                                            Instances For
                                                                              Equations
                                                                              • One or more equations did not get rendered due to their size.
                                                                              Instances For
                                                                                Equations
                                                                                • One or more equations did not get rendered due to their size.
                                                                                Instances For
                                                                                  Equations
                                                                                  • One or more equations did not get rendered due to their size.
                                                                                  Instances For
                                                                                    Equations
                                                                                    • One or more equations did not get rendered due to their size.
                                                                                    Instances For
                                                                                      Equations
                                                                                      • One or more equations did not get rendered due to their size.
                                                                                      Instances For
                                                                                        Equations
                                                                                        • One or more equations did not get rendered due to their size.
                                                                                        Instances For
                                                                                          Equations
                                                                                          • One or more equations did not get rendered due to their size.
                                                                                          Instances For
                                                                                            Equations
                                                                                            • One or more equations did not get rendered due to their size.
                                                                                            Instances For
                                                                                              Equations
                                                                                              • One or more equations did not get rendered due to their size.
                                                                                              Instances For
                                                                                                Equations
                                                                                                • One or more equations did not get rendered due to their size.
                                                                                                Instances For
                                                                                                  Equations
                                                                                                  • One or more equations did not get rendered due to their size.
                                                                                                  Instances For
                                                                                                    Equations
                                                                                                    • One or more equations did not get rendered due to their size.
                                                                                                    Instances For
                                                                                                      Equations
                                                                                                      • One or more equations did not get rendered due to their size.
                                                                                                      Instances For
                                                                                                        def Auto.Embedding.Lam.LamWF.boolFacts {ltv : LamTyVal} {lctx : NatLamSort} :
                                                                                                        LamWF ltv { lctx := lctx, rterm := LamTerm.boolFacts, rty := LamSort.base LamBaseSort.prop }
                                                                                                        Equations
                                                                                                        • One or more equations did not get rendered due to their size.
                                                                                                        Instances For
                                                                                                          Equations
                                                                                                          • One or more equations did not get rendered due to their size.
                                                                                                          Instances For
                                                                                                            def Auto.Embedding.Lam.LamWF.iteSpec {ltv : LamTyVal} {lctx : NatLamSort} (s : LamSort) :
                                                                                                            LamWF ltv { lctx := lctx, rterm := LamTerm.iteSpec s, rty := LamSort.base LamBaseSort.prop }
                                                                                                            Equations
                                                                                                            • One or more equations did not get rendered due to their size.
                                                                                                            Instances For