What pitfalls are there for LSL specifiers?
Larch Frequently Asked QuestionsAccording to Guaspari (posting to the larch-interest mailing list, on March 8, 1995), "the commonest 'purely mathematical' mistakes" in trait definitions occur when one uses structural induction "over constructors that don't freely generate a sort". To understand this, consider his example, which includes the handbook trait Set (see [Guttag-Horning93], page 167).
Related QuestionsWhat pitfalls are there for BISL specifiers?
Larch Frequently Asked QuestionsThe main thing to watch out for in a BISL specification is that you don't specify something that cannot be implemented. It's worth repeating the following mantra to yourself whenever you write a procedure specification. Of course, you would never intentionally specify a procedure that cannot be implemented. So you are only likely to fall into this pit by accident. The following are some ways it might happen.
Related QuestionsWhere can I get a checker for LSL?
Larch Frequently Asked QuestionsYou can get the MIT releases of the LSL checker using the world-wide web, starting at the following URL. http://www.sds.lcs.mit.edu/spd/larch/lsl.html You can also get the MIT release by anonymous ftp from the following URL. ftp://ftp.sds.lcs.mit.edu/pub/Larch/LSL/ Iowa State, the Larch/C++ group has made available later beta releases of the LSL checker that fix problems with its profligate use of space. You can get the sources for Unix and Windows 95 executables from the following URL.
Related QuestionsWhat are the pitfalls?
FAQ'sIt is the duty of both the person having the work done and the builder to comply with the Building Regulations. A lot of work may be undertaken between site visits by the Building Control Surveyor and, should this work be found to be unacceptable, it will need to be removed or altered.
Related QuestionsW3varsity, the best education, software, education, java, fl...Certain content -- because of its nature, relative value, or importance -- is not suitable for technology based delivery. While online training is especially well suited for the acquisition of IT skills, it has certain limitations in the area of soft skills training. Other educational content that does not translate well into the virtual environment is material requiring significant hands-on interactivity, with a strong emphasis on peer review and collaboration.Related Questions
FAQWhenever the topic of bandwidth comes up, the phone company yowls about "the last mile," the flimsy wire bottleneck between their switching station and your house. e-Learning providers also have a bottleneck, the last yard from the monitor into the learner's brain. Without motivation, this final connection will never be made. Professional training via CD-ROM flopped. Why? Because we took instructors and coaches out of the picture. The learning process breaks down when "untouched by human hands.Related Questions
What is the difference between LSL and a Larch BISL?
Larch Frequently Asked QuestionsThe main difference between LSL and a Larch BISL is that in LSL one specifies mathematical theories of the operators that are used in the pre- and postcondition specifications of a Larch BISL. Thus LSL is used to specify mathematical models and auxiliary functions, and the a Larch BISL is used to specify program modules that are to be implemented in some particular programming language.
Related QuestionsWhat is the Larch Shared Language (LSL)?
Larch Frequently Asked QuestionsThe Larch Shared Language (LSL) (see [Guttag-Horning93], Chapter 4, and [Guttag-Horning-Modet90]) is a language for specifying mathematical theories. LSL is a kind of equational algebraic specification language [Guttag75] [Guttag-Horning78] [Goguen-Thatcher-Wagner78] [Ehrig-Mahr85] [Futatsugi-etal85] [Mosses96] [Loeckx-Ehrich-Wolf96]. That is, specifications in LSL mainly consist of first-order equations between terms.
Related QuestionsWhere can I find information on-line about LSL?
Larch Frequently Asked QuestionsBesides this FAQ, the best place to look is probably your own computer system. You should have a manual page for the LSL checker, if it's installed on your system. Try the Unix command man lsl to see it. You should also look for a directory (such as '/usr/larch/LSL') where the installation of LSL is found. In that directory, you will find a subdirectory 'Doc', where there is some documentation on the checker. See section 2.
Related QuestionsWhat are the sections of an LSL trait?
Larch Frequently Asked QuestionsThe sections of an LSL trait are determined by the LSL grammar [Guttag-Horning-Modet90]. (See section 2.3 Where can I get a checker for LSL?, for a more recent grammar, which is found in the file 'Doc/lsl3_1.y', for version 3.1, and 'Doc/lsl3_2.y', for version 3.2.
Related QuestionsWhat is the meaning of an LSL specification?
Larch Frequently Asked QuestionsLSL trait denotes a theory, which is a collection of true formulas (of sort Bool). This theory contains "the trait's assertions, the conventional axioms of first-order logic, everything that follows from them, and nothing else" (see [Guttag-Horning93], p. 37). For a brief introduction to these ideas, see Chapter 2 of [Guttag-Horning93]; for general background on equational logic, see [Ehrig-Mahr85] or [Loeckx-Ehrich-Wolf96].
Related QuestionsCan I specify a partial function in LSL?
Larch Frequently Asked QuestionsTechnically, no; all functions specified in LSL are total (see section 2.14 What is the meaning of an LSL specification?). Thus every operator specified in LSL takes on some value for every combination of arguments. What you can do is to underspecify such an operator, by not specifying what its value is on all arguments. For example, the operator head in the handbook trait List (see [Guttag-Horning93], p. 173) is underspecified in this sense, because no value is specified for head(empty).
Related QuestionsDo I have to specify everything completely in LSL?
Larch Frequently Asked QuestionsNo, you don't have to specify everything completely in LSL. It's a good idea, in fact, to only specify the aspects that are important for what you are doing. For example, if you want to reason about graph data structures, it's best to not (at first, anyway) try to specify the theory of graphs in great detail. Put in what you want, and go with that. (This won't hurt anything, because whatever you need to prove you'll be forced to add eventually.
Related QuestionsCan you give me some tips for specifying things with LSL?
Larch Frequently Asked QuestionsThe first tip helps you write down an algebraic specification of a sort that is intended to be used as an abstract data type (see [Guttag-Horning78], Section 3.4, and [Guttag-Horning93], Section 4.9). The idea is to divide the set of operators of your sort into generators and observers. A constructor returns your sort, while an observer takes your sort in at least one argument and returns some more primitive sort (such as Bool). The tip (quoted from [Guttag-Horning93], p.
Related QuestionsWhere can I find handbooks of LSL traits?
Larch Frequently Asked QuestionsThe most commonly-used handbook of LSL traits is Guttag and Horning's handbook ([Guttag-Horning93], Appendix A). This can be obtained by anonymous ftp with the LSL checker (see section 2.3 Where can I get a checker for LSL?). A hypertext version is on-line in http://www.research.digital.com/SRC/larch/toc.html A general resource for all known handbooks that are publically available is found on the world-wide web, at the following URL. http://www.cs.iastate.edu/~leavens/Handbooks.
Related QuestionsWhere can I find LaTeX or TeX macros for LSL?
Larch Frequently Asked QuestionsYou can get a LaTeX style file, 'larch.sty', and a macro file defining a bunch of mathematical symbols, 'larchmath.tex', by anonymous ftp from the following URL. ftp://ftp.cs.iastate.edu/pub/larch/tex The documentation for 'larch.sty' says that it is to be used with LaTeX 2.09. However, it can be used with LaTeX2e. To do so, put the following lines at the start of your LaTeX input.
Related QuestionsWhat pitfalls are there for LP users?
Larch Frequently Asked QuestionsThe biggest pitfall is to not think about what you are doing, but to simply try random proof strategies. This quickly becomes frustrating. See section 3.15 Can you give me some tips on proving things with LP?, for how to work with LP in a more fruitful way. If your theory is inconsistent, proofs may not be easy, but they will always be possible. Always try to convince yourself of your theory's consistency before celebrating your proof. See section 3.
Related QuestionsDo you have a good makefile to use with the LSL checker?
Larch Frequently Asked QuestionsThe following makefile shows one way to use the Unix command make to help check LSL traits. It relies on properties of the Bourne shell under Unix and standard Unix make, so it would have to be adjusted to work on other systems. (Also, if you cut and paste this makefile, be sure to change the leading blanks to tab characters on the rule lines.) SHELL = /bin/sh LSL = lsl LSLFLAGS = .SUFFIXES: .lsl .lsl-ckd .lp .lsl.lsl-ckd: $(LSL) $(LSLFLAGS) $< 2>&1 | tee $ .lsl.
Related QuestionsWhat is the purpose of an LSL trait? What is a trait used for?
Larch Frequently Asked QuestionsLSL trait is used to describe a mathematical theory. This could be used by a mathematician to simply formalize a theory, but more commonly the theory specified is intended to be used as the mathematical vocabulary for some BISL. Another common use is as a way of specifying input to the Larch Prover (LP). When used as mathematical vocabulary for some behavioral interface specification, one can identify some other common uses. Quite often one wants to specify the abstract values of some data type.
Related QuestionsHow does LSL handle undefined terms?
Larch Frequently Asked QuestionsThe following answer is adapted from a posting to 'comp.specification.larch' by Horning (July 19, 1995) in response to a question by Leavens (July 18, 1995). The trouble starts with your question: there are no "undefined terms" in LSL. LSL is a language of total functions. There are no partial functions associated with operators, although there may be underspecified operators (i.e., operators bound to functions with different values in different models).
Related QuestionsHow do I write logical quantifiers within an LSL term?
Larch Frequently Asked QuestionsIn LSL 3.1, you can write a universal quantifier within an LSL term by using \A, and an existential quantifier using \E. As an example, consider the following trait (from Leavens's Math handbook).
Related QuestionsIs there a literate programming tool for use with LSL?
Larch Frequently Asked QuestionsYes, there actually is a version of "spiderweb" specialized for use with LSL. If you are really a fan of such fancy systems, you can find it by using the literate programming library's URL. http://www.desy.de/user/projects/LitProg.html However, we have found that using the "noweb" system is much easier for most people, and nearly as good. You can get noweb from the literate programming library (see above), or directly from the following URL. http://www.eecs.harvard.edu/~nr/noweb/intro.
Related QuestionsIs there a tool for converting LSL to hypertext for the web?
Larch Frequently Asked QuestionsYes, Penix's "lsl2html" tool converts an LSL input file to HTML, so it can be browsed over the net. It can be found at the following URL. http://www.ece.uc.edu/~kbse/lsl2html/ Unfortunately, Penix's tool has a few problems that have never been fixed. Instead, you might want to use Leavens's tool "lcpp2html", which is available from the following URL. http://www.cs.iastate.edu/~leavens/lcpp2html.html
Related QuestionsDo I need to use LSL if I use LP?
Larch Frequently Asked QuestionsNo, you do not need to use LSL if you use LP. LP has its own input format (although it is very similar to LSL's input format). So, many users of LP simply bypass LSL, and use LP exclusively. On the other hand, using LSL as an input format to LP has the following advantages. The LSL checker automatically generates proof management commands (scripting and logging) for LP, and helps organize theories and conjectures into files. See section 3.10 How do I use LP to check my LSL traits?.
Related QuestionsWhat is the use of each kind of file generated by the LSL checker?
Larch Frequently Asked QuestionsThe LSL checker, when used with the '-lp' switch on a file named 'Foo.lsl', in general produces three files: 'Foo_Axioms.lp', 'Foo_Checks.lp', and 'Foo_Theorems.lp'. Each of these files is in LP input format, hence the suffix '.lp'. The file 'Foo_Axioms.lp' contains a translation of the trait in 'Foo.lsl', minus the implies section. It is "executed" by LP when LP is executing the translation of some other LSL trait that includes Foo. The file 'Foo_Checks.
Related QuestionsDo I need to write an LSL trait to specify something in a BISL?
Larch Frequently Asked QuestionsNo, you don't always have to write an LSL trait to specify something in a BISL, it just seems that way. Seriously, you don't have to write a trait in the following circumstances. You are specifying a procedure and all of the mathematical vocabulary needed is available in existing traits. These traits may come from a handbook (see section 2.23 Where can I find handbooks of LSL traits?), or they may be built-in to your BISL.
Related QuestionsWhat's the deal with access specifiers ?
C++ cornerAccess specifiers help you customize who can and cannot access your members, be it functions or data. This table should shed some light on the problem:
Related QuestionsWhat are the access-specifiers available in c#?
C# FAQprotected internal - Access is limited to the current assembly or types derived from the containing class. Instance constructor is executed when a new instance of type is created and the class constructor is executed after the type is loaded and before any one of the type members is accessed. (It will get executed only 1st time, when we call any static methods/fields in the same class.) Class constructors are used for static field initialization.
Related Questions