Я хотел бы доказать следующую лемму в Изабель:
lemma "T (Open # xs) ⟹ ¬ S (Open # xs) ⟹ count xs Close ≤ count xs Open"
Пожалуйста, найдите определения ниже:
datatype paren = Open | Close
inductive S where
S_empty: "S []" |
S_append: "S xs ⟹ S ys ⟹ S (xs @ ys)" |
S_paren: "S xs ⟹ S (Open # xs @ [Close])"
inductive T where
T_S: "T []" |
T_append: "T xs ⟹ T ys ⟹ T (xs @ ys)" |
T_paren: "T xs ⟹ T (Open # xs @ [Close])" |
T_left: "T xs ⟹ T (Open # xs)"
Лемма утверждает, что несбалансированная структура скобок может привести к возможно несбалансированной структуре при удалении скобки Open
.
Я пробовал методы, описанные в книге «Помощник по доказательству для логики высшего порядка», но пока ни один из них не работает. В частности, я пытался использовать инверсию и наведение правил, sledgehammer
и другие методы.
Одна из проблем заключается в том, что я еще не узнал о доказательствах Изара, что, таким образом, усложняет доказательство. Я бы предпочел, чтобы вы могли ориентировать меня с помощью простых команд применения.