Equations
- (Lean.Grind.AC.Seq.var x_1).length = 1
- (Lean.Grind.AC.Seq.cons x_1 s).length = s.length + 1
Instances For
Reverses the sequence
Equations
- (Lean.Grind.AC.Seq.var x_1).reverse = Lean.Grind.AC.Seq.var x_1
- (Lean.Grind.AC.Seq.cons x_1 s_1).reverse = Lean.Grind.AC.Seq.reverse.go✝ s_1 (Lean.Grind.AC.Seq.var x_1)
Instances For
Equations
- Lean.Grind.AC.instOrdSeq_lean = { compare := Lean.Grind.AC.Seq.compare }
Equations
Equations
- Lean.Grind.AC.instOfNatSeq_lean = { ofNat := Lean.Grind.AC.Seq.var n }
Instances For
Result type for s₁.subseq s₂
- false : SubseqResult
s₁
is not a subsequence ofs₂
- exact : SubseqResult
s₁ == s₂
- prefix
(s : Seq)
: SubseqResult
s₁ ++ s == s₂
- suffix
(s : Seq)
: SubseqResult
s ++ s₁ == s₂
- middle
(p s : Seq)
: SubseqResult
p ++ s₁ ++ s == s₂
Instances For
s₁.subseq s₂
checks whether s₁
is a subsequence of s₂
Equations
- One or more equations did not get rendered due to their size.
- s₁.subseq (Lean.Grind.AC.Seq.var x_1) = if (s₁ == Lean.Grind.AC.Seq.var x_1) = true then Lean.Grind.AC.SubseqResult.exact else Lean.Grind.AC.SubseqResult.false
Instances For
Result type for s₁.subset s₂
- false : SubsetResult
s₁
is not a subset ofs₂
- exact : SubsetResult
s₁ == s₂
- strict
(s : Seq)
: SubsetResult
s₁.union s == s₂
Instances For
s₁.subset s₂
checks whether s₁
is a subset of s₂
.
It assumes s₁
and s₂
are sorted.
Equations
- One or more equations did not get rendered due to their size.
- (Lean.Grind.AC.Seq.var x).subset (Lean.Grind.AC.Seq.var y) = if (x == y) = true then Lean.Grind.AC.SubsetResult.exact else Lean.Grind.AC.SubsetResult.false
- (Lean.Grind.AC.Seq.cons x s).subset (Lean.Grind.AC.Seq.var x_1) = Lean.Grind.AC.SubsetResult.false
Instances For
Equations
- (Lean.Grind.AC.Seq.var x_1).isSorted = true
- (Lean.Grind.AC.Seq.cons x_1 s_1).isSorted = Lean.Grind.AC.Seq.isSorted.go✝ x_1 s_1
Instances For
Equations
- (Lean.Grind.AC.Seq.var x_2).contains x = (x == x_2)
- (Lean.Grind.AC.Seq.cons x_2 s_1).contains x = (x == x_2 || s_1.contains x)
Instances For
Equations
Instances For
Equations
- Lean.Grind.AC.toSeq? [] = none
- Lean.Grind.AC.toSeq? (x :: xs_2) = some (Lean.Grind.AC.toSeq?.go✝ xs_2 (Lean.Grind.AC.Seq.var x))
Instances For
Returns some (r₁, c, r₂)
if s₁ == r₁.union c
and s₂ == r₂.union c
It assumes s₁
and s₂
are sorted
Equations
- s₁.superposeAC? s₂ = Lean.Grind.AC.Seq.superposeAC?.go✝ s₁ s₂ none none none
Instances For
Returns some (p, c, s)
if s₁ == p ++ c
and s₂ == c ++ s
Equations
- (Lean.Grind.AC.Seq.var x_1).superpose? s₂ = none
- (Lean.Grind.AC.Seq.cons x_1 s).superpose? s₂ = Lean.Grind.AC.Seq.superpose?.go✝ s s₂ (Lean.Grind.AC.Seq.var x_1)
Instances For
Equations
- (Lean.Grind.AC.Seq.var x_1).firstVar = x_1
- (Lean.Grind.AC.Seq.cons x_1 s_1).firstVar = x_1
Instances For
Equations
- (Lean.Grind.AC.Seq.var x_2).startsWithVar x = (x == x_2)
- (Lean.Grind.AC.Seq.cons x_2 s_1).startsWithVar x = (x == x_2)
Instances For
Equations
- (Lean.Grind.AC.Seq.var x_1).lastVar = x_1
- (Lean.Grind.AC.Seq.cons x_1 s_1).lastVar = s_1.lastVar
Instances For
Equations
- (Lean.Grind.AC.Seq.var x_2).endsWithVar x = (x == x_2)
- (Lean.Grind.AC.Seq.cons x_2 s_1).endsWithVar x = s_1.endsWithVar x