AFAIK는 내장 기능이 없지만이를 달성하는 데는 여러 가지 방법이 있습니다. 당신은 이미 그 중 하나를 발견했습니다, 즉 용어를 보조 정리로 서술 한 다음 단순화기를 호출하십시오. 단점은 모든 상황에서 사용할 수 없다는 것입니다 (예 : 적용 증명 스크립트 내부가 아닌 경우).
또는 [simplified]
속성을 통해 단순화를 호출 할 수 있습니다. 이것은 thm 명령을 통해 모든 컨텍스트에서 작동하며 출력 버퍼에 출력을 생성합니다. 먼저, 정리를 정리에 주입해야합니다. 그러면 simplify
을 정리에 적용하고 thm
과 함께 결과를 표시 할 수 있습니다. 여기에 잡동사니의 이론에 들어갈 수있는 준비물이 있습니다.
definition simp :: "'a ⇒ bool" where "simp _ = True"
notation (output) simp ("_")
lemma simp: "simp x" by(simp add: simp_def)
그런 다음
thm simp[of "foo 1 2 a b", simplified]
를 작성하고 출력 창에서 단순화 된 용어를 볼 수 있습니다.
평 가가 일반적으로 사용하는 simpset보다 다른 재 작성 규칙 세트 (코드 방정식)를 사용하기 때문에 평가 메커니즘이 원하는 것이 아닐 수 있습니다. 따라서 이것은 단순화기를 적용하는 것보다 다른 용어로 평가할 가능성이 높습니다. 차이를 확인하려면 lemma "foo 1 2 a b = blah"
으로 simp
대신 code_simp
을 적용하십시오. 증명 방법 code_simp
은 value [simp]
처럼 코드 방정식을 사용합니다.
감사합니다. chris. 'value [simp]'가 제대로 작동 할 것으로 기대 했었고 거의 "시도한 것 목록"에이 값을 포함 시켰습니다. 그래서 나에게 도움이되는 이유는 그것이 작동하지 않는 이유입니다. –