//****************************************************************************//
//*********** Logic (cont.) / Planning - October 2nd, 2019 ******************//
//**************************************************************************//

- Okay; we're still talking about logic, and what better example of logic can we find than Sherlock Holmes?
    - *clip from the far inferior 2009 Sherlock Holmes movie*
    - Now, this clip clearly isn't logic like we've been talking about so far; Holmes makes these logical leaps where there's more than 1 explanation
        - This is NOT deductive logic, but ABDUCTIVE logic ("not to be confused with abduction, which I sincerely hope none of you have done!")
            - Abduction is when we go backwards from effects to causes, rather than causes to effects
            - This is similar to what doctors do: trying to go from a set of symptoms to the disease causing those symptoms
                - Programmers, too, use abduction when they're debugging
            - You can try converting abductive logic to deductive logic by saying "if this is the cause, does it explain these effects?" (i.e. now going from causes to effects)
        - While not displayed in this clip, there's also INDUCTIVE logic
- Later on, we'll try and create a theory that combines deduction, abduction, and induction

- Now, let's briefly talk about the midterm examination
    - There are 8 questions, each involved with a different framework and how it might fail; your responses should be no more than ~2500 words total, or about 1-2 paragraphs per answer
--------------------------------------------------------------------------------

- So, let's revisit our box example from yesterday and figure out how to show a box isn't liftable
    - To speed this up, we'll use something called ROBINSON'S ALGORITHM
        - Here, suppose we have an implication rule, like this:

                !(can-move) => !(liftable)

            - Therefore, this implies that "can-move" and "!liftable" have to be true at the same time (by "implication elimination"):

                can-move AND !liftable
            - (Need to revisit this???)

    - For 

- You may see it's cloudy outside and deduce it's going to rain; you may be inside this building and hear rain falling on the roof, and ABDUCE that it's raining
    - Of course, abduction could be wrong; those raindrops could be because someone is making a movie on the roof, or your friends are playing a trick on you, or any other number of reasons!
    - Deductive logic is the ONLY kind of logic that's guaranteed to give you correct, sound conclusions; the rest can only be probabilistic at best
        - We want robots to be correct and truthful; otherwise, humans won't accept them, and that's why deductive logic is so attractive to many researchers
        - The abducers and inducers, though, are less interested in correctness and more interested in capturing the breadth of human logic
            - Deductive logic dominated AI until several decades ago, and it fell for several reasons: many concepts are hard to axiomatize, it isn't clear how much prior knowledge a robot "needs," it's computationally slow, etc.

- We've discussed many techniques in AI so far - what's going on inside our heads? Is it a mess with all these techniques? How should a robot - or you, for that matter - decide what technique to use?
    - Unlike other schools of AI where there's 1 dominant way to approach problems, in this class, we look at a large number of techniques and try to combine them

- All of this leads into PLANNING - which seems similar to means-end analysis, but it's NOT the same
    - Back to our block world problem
    - Now, suppose we want to paint both our house's ceiling and the ladder - we know that it's most efficient to paint the ceiling first, then paint the ladder while the ceiling's drying, right?
        - So, we have 2 goals here - but in many cases, goals conflict! If we paint the ladder first, we can't climb on a wet ladder to paint the ceiling!
    - So planinng involves thinking about goals, then making a plan for each goal, and finally thinking about how these plans interact with one another
        - We're going to assume that inside our heads, there's a lot of little people doing different things, trying to cooperate - one makes a plan, the 2nd criticizes it, a 3rd fixes it, etc.
        - This is the SOCIETY OF MIND theory, where many simple agents interacting leads to complex behavior
            - Marvin Minsky wrote a very fun book about this theory, but let's see how it works
    - So, how do we implement this?
        - First, we need to represent our goal state using logic: "painted(ladder) AND painted(ceiling)"
        - We'll then represent our initial state

- How do we figure out this initial state, anyway? That's what we'll discuss next time!