Hello Narayan, Ed, Paul: Thanks for responding to my question. I believe a common concern is Narayan's "semantic gap" between specification and results, i.e., if you actually enforce the specifications will you really get the effect you seek. Well, if you have a correct compiler you will get the correct effect. So, the real question is whether you can express your intuitions well enough in logic. Ed provided a realistic example but I don't think there is any problem in expressing it -intuitively- in Alloy or Prolog. Instead of treating it as one giant constraint, you define intermediate predicates and compose these. This is analogous to what you do in a programming language such as Perl. You define simple procedures then assemble these into more complex ones.

Narayan also raised the concern that enforcement of global constraints is dicey because administrative control is often not centralized, but rather distributed across many administrators. However, I don't see why this is related to logic. Wouldn't this arise with any attempt at automatic reconfiguration that spans multiple administrative domains?

Efficient enforcement of constraints is a genuine concern and the subject of our current research. But, please note that enforcement is NOT the only use of a specification. Diagnosis is another very important use. Since it is read-only it avoids the above "semantic gap" concern. Network administrators routinely create network diagrams. These can be regarded as Boolean constraints. But these leave out important parts of their intended policy such as "for every IPSec tunnel originating at a router, there is a static route that directs traffic for the remote destination into the tunnel". I don't see any simple way of graphically specifying such constraints. Therefore, can't we provide a few primitive constraints along with FOL operators for composing these, and expect administrators to supply the missing pieces of their intended policy? -- Sanjai








[EMAIL PROTECTED] wrote:
Quoting Sanjai Narain <[EMAIL PROTECTED]>:

Logic-based languages are great for expressing complex constraints arising in system administration. However, it is also considered axiomatic that system administrators will never use such languages. The reason given is that they require too much mathematical training.

I don't think this is the only reason - eventually, there will need to be some formal education associated with system administration, the same way you wouldn't let a guy who "kinda fixes his car sometimes" service the engines on a 747. But what that education should consist of is still up for grabs I think? (This is a deep hole on its own).

In my opinion, predicate logic is very, very dense. Different orderings of predicates can have subtly different meanings, leading to (disastrously?) different solutions from segments of code which differ very little.

When I was working on examples for cfgw like "my redundancy isnt invalidated by mapping multiple redundant virtual instances to a single physical node" and "each and every client is pointing at a server which exists, and which supplies the service it is requesting" I found it relatively difficult to specify these correctly, because of the difficulty of keeping track of exactly which quantifiers were in play, and of rephrasing what I wanted to say in terms of quantification. (e.g. for all p a physical node, and any v a virtual node, where v is mapped to p, then for any w a virtual node, where w is not v, then if s is a service, and s needs redundancy, and v provides s, and w provides s, then w is not mapped to p... there are probably errors in this example, and I'm sure it can be coded more efficiently, my point is just to illustrate that for casual use, this is very dense, and small changes can have far reaching implications).

I think that training could help, but I think that widespread use of predicate logic is a long way off. In an environment in which safety is at a highly desirable, I think it is a mistake to think a more powerful tool is preferrable. In general, its more likely people will be buying into safety rails than high performance engines in the future.

I would like to challenge this view. What is so hard about logic? Everyone knows Boolean constraints. First-order logic is simply Boolean logic + quantifiers. This is adequate for specifying a very large class of constraints. If system administrators can handle complexities of procedural languages like Perl, then surely a declarative language like FOL should be a breeze, shouldn't it? In particular, I think we should stop trying hard to sweep FOL under the rug of GUIs. Even if we could create a GUI in which one could express all of FOL, it would be so cumbersome that it would be much easier to use text. What do you think? -- Sanjai

I think the attraction of GUIs (I don't know if its just GUIs; I see no reason why a CLI with options couldn't provide the same benefits) is that they can provide (perhaps using first-order logic) a set of things for administrators to do which are tested and safe, which can then be merely activated.

I don't think the objective is to replicate the functionality provided by first order logic. I think that really, formally specifying the exact predicates in operation on the network is something people want to do now, because they have no idea what predicates operate on their network, and no way to try it. I think this is the same as if we had terrible opaque tools and no compilers or assemblers: people would say now that they want to write their own. We have compilers, and what people want is for someone else to write the tools, because formally specifying the exact process by which to accomplish each task is hard and time consuming. The same will hold (perhaps even more so) for logical assertions like these. People simply want a "good enough" option to select. I think the objective is to pick the 10-50 things you were most likely to use formal specification for, and then provide those as options.

Ed

_______________________________________________
lssconf-discuss mailing list
lssconf-discuss@inf.ed.ac.uk
http://lists.inf.ed.ac.uk/mailman/listinfo/lssconf-discuss


--
Sanjai Narain, Ph.D.
Senior Research Scientist
Information Assurance and Security Department
Telcordia Technologies, Inc. 1 Telcordia Drive, Room 1N-375
Piscataway, NJ 08854
732 699 2806 (T)
908 337 3636 (M)
[EMAIL PROTECTED]

_______________________________________________
lssconf-discuss mailing list
lssconf-discuss@inf.ed.ac.uk
http://lists.inf.ed.ac.uk/mailman/listinfo/lssconf-discuss

Reply via email to