How Can I Do That with ACL2? Recent Enhancements to ACL2 Matt - - PowerPoint PPT Presentation

how can i do that with acl2 recent enhancements to acl2
SMART_READER_LITE
LIVE PREVIEW

How Can I Do That with ACL2? Recent Enhancements to ACL2 Matt - - PowerPoint PPT Presentation

How Can I Do That with ACL2? Recent Enhancements to ACL2 Matt Kaufmann and J Strother Moore 1 Introduction (1) ACL2 Version 3.5 was released in May, 2009. Release note items (see :DOC release-notes) since then: (+ 41 ; 3.6 (8/2009) 3 ;


slide-1
SLIDE 1

How Can I Do That with ACL2? Recent Enhancements to ACL2

Matt Kaufmann and J Strother Moore

1

slide-2
SLIDE 2

Introduction (1)

ACL2 Version 3.5 was released in May, 2009. Release note items (see :DOC release-notes) since then: (+ 41 ; 3.6 (8/2009) 3 ; 3.6.1 (9/2009) 100 ; 4.0 (7/2010) 19 ; 4.1 (9/2010) 68 ; 4.2 (1/2011) 93) ; 4.3 (7/2011) = 324 So far there are more than 30 items for the next release (not discussed today).

2

slide-3
SLIDE 3

Introduction (1)

ACL2 Version 3.5 was released in May, 2009. Release note items (see :DOC release-notes) since then: (+ 41 ; 3.6 (8/2009) 3 ; 3.6.1 (9/2009) 100 ; 4.0 (7/2010) 19 ; 4.1 (9/2010) 68 ; 4.2 (1/2011) 93) ; 4.3 (7/2011) = 324 So far there are more than 30 items for the next release (not discussed today).

3

slide-4
SLIDE 4

Introduction (1)

ACL2 Version 3.5 was released in May, 2009. Release note items (see :DOC release-notes) since then: (+ 41 ; 3.6 (8/2009) 3 ; 3.6.1 (9/2009) 100 ; 4.0 (7/2010) 19 ; 4.1 (9/2010) 68 ; 4.2 (1/2011) 93) ; 4.3 (7/2011) = 324 So far there are more than 30 items for the next release (not discussed today).

4

slide-5
SLIDE 5

Introduction (2)

Common characteristics of improvements:

◮ Requested by users ◮ Pragmatic, typically related to programming,

proof control, and system infrastructure

5

slide-6
SLIDE 6

Today’s Goal and Approach

The goal today is to raise awareness of ACL2 capabilities. Only a few of the 324 improvements are discussed in the paper, which has hyperlinks to the documentation. This talk will touch only briefly on those improvements; see the paper and ACL2 documentation for details. This talk and paper are at the user level. See source code and its comments for implementation-level details.

6

slide-7
SLIDE 7

Today’s Goal and Approach

The goal today is to raise awareness of ACL2 capabilities. Only a few of the 324 improvements are discussed in the paper, which has hyperlinks to the documentation. This talk will touch only briefly on those improvements; see the paper and ACL2 documentation for details. This talk and paper are at the user level. See source code and its comments for implementation-level details.

7

slide-8
SLIDE 8

Today’s Goal and Approach

The goal today is to raise awareness of ACL2 capabilities. Only a few of the 324 improvements are discussed in the paper, which has hyperlinks to the documentation. This talk will touch only briefly on those improvements; see the paper and ACL2 documentation for details. This talk and paper are at the user level. See source code and its comments for implementation-level details.

8

slide-9
SLIDE 9

Today’s Goal and Approach

The goal today is to raise awareness of ACL2 capabilities. Only a few of the 324 improvements are discussed in the paper, which has hyperlinks to the documentation. This talk will touch only briefly on those improvements; see the paper and ACL2 documentation for details. This talk and paper are at the user level. See source code and its comments for implementation-level details.

9

slide-10
SLIDE 10

Outline

◮ Programming Features ◮ Proof Debug, Control, and Reporting ◮ System-level Enhancements ◮ Concluding Remarks

10

slide-11
SLIDE 11

Programming Features

◮ Equality variants ◮ Defattach (rump session talk) ◮ Return-last (macros with side effects) ◮ Avoiding guard violations

(with-guard-checking, ec-call)

◮ Printing without state ◮ Parallelism (D. Rager’s rump session talk) ◮ Other recent programming support

◮ mv-list ◮ :redef+, :redef- ◮ Improvements to trace$, time$ ◮ pkg-imports ◮ file-write-date$ ◮ (append), (append x) 11

slide-12
SLIDE 12

Programming Features

◮ Equality variants ◮ Defattach (rump session talk) ◮ Return-last (macros with side effects) ◮ Avoiding guard violations

(with-guard-checking, ec-call)

◮ Printing without state ◮ Parallelism (D. Rager’s rump session talk) ◮ Other recent programming support

◮ mv-list ◮ :redef+, :redef- ◮ Improvements to trace$, time$ ◮ pkg-imports ◮ file-write-date$ ◮ (append), (append x) 12

slide-13
SLIDE 13

Programming Features

◮ Equality variants ◮ Defattach (rump session talk) ◮ Return-last (macros with side effects) ◮ Avoiding guard violations

(with-guard-checking, ec-call)

◮ Printing without state ◮ Parallelism (D. Rager’s rump session talk) ◮ Other recent programming support

◮ mv-list ◮ :redef+, :redef- ◮ Improvements to trace$, time$ ◮ pkg-imports ◮ file-write-date$ ◮ (append), (append x) 13

slide-14
SLIDE 14

Programming Features

◮ Equality variants ◮ Defattach (rump session talk) ◮ Return-last (macros with side effects) ◮ Avoiding guard violations

(with-guard-checking, ec-call)

◮ Printing without state ◮ Parallelism (D. Rager’s rump session talk) ◮ Other recent programming support

◮ mv-list ◮ :redef+, :redef- ◮ Improvements to trace$, time$ ◮ pkg-imports ◮ file-write-date$ ◮ (append), (append x) 14

slide-15
SLIDE 15

Programming Features

◮ Equality variants ◮ Defattach (rump session talk) ◮ Return-last (macros with side effects) ◮ Avoiding guard violations

(with-guard-checking, ec-call)

◮ Printing without state ◮ Parallelism (D. Rager’s rump session talk) ◮ Other recent programming support

◮ mv-list ◮ :redef+, :redef- ◮ Improvements to trace$, time$ ◮ pkg-imports ◮ file-write-date$ ◮ (append), (append x) 15

slide-16
SLIDE 16

Programming Features

◮ Equality variants ◮ Defattach (rump session talk) ◮ Return-last (macros with side effects) ◮ Avoiding guard violations

(with-guard-checking, ec-call)

◮ Printing without state ◮ Parallelism (D. Rager’s rump session talk) ◮ Other recent programming support

◮ mv-list ◮ :redef+, :redef- ◮ Improvements to trace$, time$ ◮ pkg-imports ◮ file-write-date$ ◮ (append), (append x) 16

slide-17
SLIDE 17

Programming Features

◮ Equality variants ◮ Defattach (rump session talk) ◮ Return-last (macros with side effects) ◮ Avoiding guard violations

(with-guard-checking, ec-call)

◮ Printing without state ◮ Parallelism (D. Rager’s rump session talk) ◮ Other recent programming support

◮ mv-list ◮ :redef+, :redef- ◮ Improvements to trace$, time$ ◮ pkg-imports ◮ file-write-date$ ◮ (append), (append x) 17

slide-18
SLIDE 18

Programming Features

◮ Equality variants ◮ Defattach (rump session talk) ◮ Return-last (macros with side effects) ◮ Avoiding guard violations

(with-guard-checking, ec-call)

◮ Printing without state ◮ Parallelism (D. Rager’s rump session talk) ◮ Other recent programming support

◮ mv-list ◮ :redef+, :redef- ◮ Improvements to trace$, time$ ◮ pkg-imports ◮ file-write-date$ ◮ (append), (append x) 18

slide-19
SLIDE 19

Equality variants

**DEMO**

19

slide-20
SLIDE 20

Printing Without State

◮ Observation-cw, warning$-cw: unlike

cw, can be turned off

◮ Aside: Other new stateless functions include

translate-cmp

◮ Formatted creation of strings (demo) ◮ Printing to a “string channel” (see :DOC io) ◮ Dangerous but cool: with-local-state

20

slide-21
SLIDE 21

Printing Without State

◮ Observation-cw, warning$-cw: unlike

cw, can be turned off

◮ Aside: Other new stateless functions include

translate-cmp

◮ Formatted creation of strings (demo) ◮ Printing to a “string channel” (see :DOC io) ◮ Dangerous but cool: with-local-state

21

slide-22
SLIDE 22

Printing Without State

◮ Observation-cw, warning$-cw: unlike

cw, can be turned off

◮ Aside: Other new stateless functions include

translate-cmp

◮ Formatted creation of strings (demo) ◮ Printing to a “string channel” (see :DOC io) ◮ Dangerous but cool: with-local-state

22

slide-23
SLIDE 23

Printing Without State

◮ Observation-cw, warning$-cw: unlike

cw, can be turned off

◮ Aside: Other new stateless functions include

translate-cmp

◮ Formatted creation of strings (demo) ◮ Printing to a “string channel” (see :DOC io) ◮ Dangerous but cool: with-local-state

23

slide-24
SLIDE 24

Printing Without State

◮ Observation-cw, warning$-cw: unlike

cw, can be turned off

◮ Aside: Other new stateless functions include

translate-cmp

◮ Formatted creation of strings (demo) ◮ Printing to a “string channel” (see :DOC io) ◮ Dangerous but cool: with-local-state

24

slide-25
SLIDE 25

Outline

◮ Programming Features ◮ Proof Debug, Control, and Reporting ◮ System-level Enhancements ◮ Concluding Remarks

25

slide-26
SLIDE 26

Proof Debug, Control, and Reporting

◮ Hints ◮ Proof-checker enhancements

(:instructions in hints; user-defined macro commands in :instructions)

◮ Parallelism in proofs (Rager’s talk) ◮ Limiting proof effort

(with-prover-step-limit)

◮ Proof debugging ◮ New heuristics (rewrite-cache talk; match

all free-variables in type-prescription rules)

26

slide-27
SLIDE 27

Proof Debug, Control, and Reporting

◮ Hints ◮ Proof-checker enhancements

(:instructions in hints; user-defined macro commands in :instructions)

◮ Parallelism in proofs (Rager’s talk) ◮ Limiting proof effort

(with-prover-step-limit)

◮ Proof debugging ◮ New heuristics (rewrite-cache talk; match

all free-variables in type-prescription rules)

27

slide-28
SLIDE 28

Proof Debug, Control, and Reporting

◮ Hints ◮ Proof-checker enhancements

(:instructions in hints; user-defined macro commands in :instructions)

◮ Parallelism in proofs (Rager’s talk) ◮ Limiting proof effort

(with-prover-step-limit)

◮ Proof debugging ◮ New heuristics (rewrite-cache talk; match

all free-variables in type-prescription rules)

28

slide-29
SLIDE 29

Proof Debug, Control, and Reporting

◮ Hints ◮ Proof-checker enhancements

(:instructions in hints; user-defined macro commands in :instructions)

◮ Parallelism in proofs (Rager’s talk) ◮ Limiting proof effort

(with-prover-step-limit)

◮ Proof debugging ◮ New heuristics (rewrite-cache talk; match

all free-variables in type-prescription rules)

29

slide-30
SLIDE 30

Proof Debug, Control, and Reporting

◮ Hints ◮ Proof-checker enhancements

(:instructions in hints; user-defined macro commands in :instructions)

◮ Parallelism in proofs (Rager’s talk) ◮ Limiting proof effort

(with-prover-step-limit)

◮ Proof debugging ◮ New heuristics (rewrite-cache talk; match

all free-variables in type-prescription rules)

30

slide-31
SLIDE 31

Proof Debug, Control, and Reporting

◮ Hints ◮ Proof-checker enhancements

(:instructions in hints; user-defined macro commands in :instructions)

◮ Parallelism in proofs (Rager’s talk) ◮ Limiting proof effort

(with-prover-step-limit)

◮ Proof debugging ◮ New heuristics (rewrite-cache talk; match

all free-variables in type-prescription rules)

31

slide-32
SLIDE 32

Hints

◮ Override-hints and backtrack hints (see

talk, “Integrating Testing and Interactive Theorem Proving”)

◮ See :DOC hints-and-the-waterfall for careful

explanation of the hints mechanism.

◮ Distributed book

books/hints/basic-tests.lisp has examples.

◮ Other improvements: :no-thanks,

:backchain-limit-rw

32

slide-33
SLIDE 33

Hints

◮ Override-hints and backtrack hints (see

talk, “Integrating Testing and Interactive Theorem Proving”)

◮ See :DOC hints-and-the-waterfall for careful

explanation of the hints mechanism.

◮ Distributed book

books/hints/basic-tests.lisp has examples.

◮ Other improvements: :no-thanks,

:backchain-limit-rw

33

slide-34
SLIDE 34

Hints

◮ Override-hints and backtrack hints (see

talk, “Integrating Testing and Interactive Theorem Proving”)

◮ See :DOC hints-and-the-waterfall for careful

explanation of the hints mechanism.

◮ Distributed book

books/hints/basic-tests.lisp has examples.

◮ Other improvements: :no-thanks,

:backchain-limit-rw

34

slide-35
SLIDE 35

Hints

◮ Override-hints and backtrack hints (see

talk, “Integrating Testing and Interactive Theorem Proving”)

◮ See :DOC hints-and-the-waterfall for careful

explanation of the hints mechanism.

◮ Distributed book

books/hints/basic-tests.lisp has examples.

◮ Other improvements: :no-thanks,

:backchain-limit-rw

35

slide-36
SLIDE 36

Proof debugging

◮ Accumulated-persistence: useful vs.

useless, by hypothesis and conclusion, :runes

◮ Redo-flat: now works for

certify-book

◮ Forward-chaining-reports ◮ Set-inhibited-summary-types ◮ Gag-mode enhancements: suppression of

induction schemes; can attach to print-clause-id-okp

36

slide-37
SLIDE 37

Proof debugging

◮ Accumulated-persistence: useful vs.

useless, by hypothesis and conclusion, :runes

◮ Redo-flat: now works for

certify-book

◮ Forward-chaining-reports ◮ Set-inhibited-summary-types ◮ Gag-mode enhancements: suppression of

induction schemes; can attach to print-clause-id-okp

37

slide-38
SLIDE 38

Proof debugging

◮ Accumulated-persistence: useful vs.

useless, by hypothesis and conclusion, :runes

◮ Redo-flat: now works for

certify-book

◮ Forward-chaining-reports ◮ Set-inhibited-summary-types ◮ Gag-mode enhancements: suppression of

induction schemes; can attach to print-clause-id-okp

38

slide-39
SLIDE 39

Proof debugging

◮ Accumulated-persistence: useful vs.

useless, by hypothesis and conclusion, :runes

◮ Redo-flat: now works for

certify-book

◮ Forward-chaining-reports ◮ Set-inhibited-summary-types ◮ Gag-mode enhancements: suppression of

induction schemes; can attach to print-clause-id-okp

39

slide-40
SLIDE 40

Proof debugging

◮ Accumulated-persistence: useful vs.

useless, by hypothesis and conclusion, :runes

◮ Redo-flat: now works for

certify-book

◮ Forward-chaining-reports ◮ Set-inhibited-summary-types ◮ Gag-mode enhancements: suppression of

induction schemes; can attach to print-clause-id-okp

40

slide-41
SLIDE 41

Outline

◮ Programming Features ◮ Proof Debug, Control, and Reporting ◮ System-level Enhancements ◮ Concluding Remarks

41

slide-42
SLIDE 42

System-level Enhancements

◮ Two-run certification to avoid trust tags (see

:DOC set-write-acl2x)

◮ Certifying a subset of the distributed books ◮ Size and breakdown of ACL2 source

code

◮ An mbe restriction lifted (OK to have mbe in

non-executable definition in encapsulate)

◮ Aborting just one ld level (:p! instead of

:a!)

42

slide-43
SLIDE 43

System-level Enhancements

◮ Two-run certification to avoid trust tags (see

:DOC set-write-acl2x)

◮ Certifying a subset of the distributed books ◮ Size and breakdown of ACL2 source

code

◮ An mbe restriction lifted (OK to have mbe in

non-executable definition in encapsulate)

◮ Aborting just one ld level (:p! instead of

:a!)

43

slide-44
SLIDE 44

System-level Enhancements

◮ Two-run certification to avoid trust tags (see

:DOC set-write-acl2x)

◮ Certifying a subset of the distributed books ◮ Size and breakdown of ACL2 source

code

◮ An mbe restriction lifted (OK to have mbe in

non-executable definition in encapsulate)

◮ Aborting just one ld level (:p! instead of

:a!)

44

slide-45
SLIDE 45

System-level Enhancements

◮ Two-run certification to avoid trust tags (see

:DOC set-write-acl2x)

◮ Certifying a subset of the distributed books ◮ Size and breakdown of ACL2 source

code

◮ An mbe restriction lifted (OK to have mbe in

non-executable definition in encapsulate)

◮ Aborting just one ld level (:p! instead of

:a!)

45

slide-46
SLIDE 46

System-level Enhancements

◮ Two-run certification to avoid trust tags (see

:DOC set-write-acl2x)

◮ Certifying a subset of the distributed books ◮ Size and breakdown of ACL2 source

code

◮ An mbe restriction lifted (OK to have mbe in

non-executable definition in encapsulate)

◮ Aborting just one ld level (:p! instead of

:a!)

46

slide-47
SLIDE 47

doc/acl2-code-size.txt, Version 4.3: CODE LINES: 99666 lines, 4366258 characters COMMENT LINES: 52839 lines, 3120461 characters BLANK LINES (excluding documentation): 23319 lines, 24823 characters DOCUMENTATION LINES: 80275 lines, 3586285 characters TOTAL: 256099 lines, 11097827 characters

47

slide-48
SLIDE 48

Concluding Remarks

User community feedback is critical for evolution

  • f ACL2.

Thanks to Sandip Ray for feedback on a draft of this paper, and to NSF (Grant Nos. CCF-0945316 and CNS-0910913).

48

slide-49
SLIDE 49

Concluding Remarks

User community feedback is critical for evolution

  • f ACL2.

Thanks to Sandip Ray for feedback on a draft of this paper, and to NSF (Grant Nos. CCF-0945316 and CNS-0910913).

49