Source: http://www.google.com/patents/US5386558?ie=ISO-8859-1
Timestamp: 2014-03-16 05:47:37
Document Index: 402772666

Matched Legal Cases: ['art 107', 'art 101', 'art 102', 'art 102', 'art 107', 'art 102', 'art 103', 'art 107', 'art 108', 'art 103', 'art 103', 'art 141', 'art 129', 'art 129', 'arts 150', 'arts 151', 'arts 161', 'art 151', 'art 163', 'art 152', 'art 164']

Patent US5386558 - Method and apparatus for executing control system functions in a computer system - Google PatentsSearch Images Maps Play YouTube News Gmail Drive More »Sign inAdvanced Patent SearchPatentsA control system is implemented by provision of parts which are data structures with identities, properties, and references to other parts, and clusters which are structures of associated parts. Clusters are assembled into meanings, and contexts are built from meanings and logic components. A current...http://www.google.com/patents/US5386558?utm_source=gb-gplus-sharePatent US5386558 - Method and apparatus for executing control system functions in a computer systemAdvanced Patent SearchPublication numberUS5386558 APublication typeGrantApplication numberUS 07/840,741Publication dateJan 31, 1995Filing dateFeb 24, 1992Priority dateFeb 24, 1992Fee statusLapsedPublication number07840741, 840741, US 5386558 A, US 5386558A, US-A-5386558, US5386558 A, US5386558AInventorsSusan L. Adler-Sherman, Craig L. MaudlinOriginal AssigneeAdapsys, Inc.Export CitationBiBTeX, EndNote, RefManPatent Citations (8), Referenced by (18), Classifications (14), Legal Events (7) External Links: USPTO, USPTO Assignment, EspacenetMethod and apparatus for executing control system functions in a computer systemUS 5386558 AAbstract A control system is implemented by provision of parts which are data structures with identities, properties, and references to other parts, and clusters which are structures of associated parts. Clusters are assembled into meanings, and contexts are built from meanings and logic components. A current behavior expression consisting of a cluster is established and a meaning analysis procedure searches a set of meanings in a current context for correspondence between one or more meanings and the current behavior expression. When correspondence is found, further analysis switches the current behavior expression to a meaning matched in the current context. The process continues, switching context if necessary, until no meaning can be matched to a portion of the current behavior expression. Those portions of the current behavior expression for which no meaning is found represent primitive actions which are executed to carry out a system intention.
25. Cluster-match-logic next invokes get-parts-logic (logic description 1.3.4), passing it a reference to the candidate part, in order to build a "candidate.sub.-- list" of parts referenced by the candidate but excluding any parts previously matched. In this case, the candidate.sub.-- list will contain just one part, the connector identified as part 107 in FIG. 9B.
26. Cluster-match-logic invokes get-parts-logic again, this time passing it a reference to the meaning part (part 101), in order to build a "meaning.sub.-- list" of parts referenced by the meaning part but excluding any parts already matched during this match attempt. The meaning.sub.-- list will also contain just one part, the connector identified as part 102 in FIG. 9A.
27. Cluster-match-logic now invokes C1's recursive-match-logic, giving this logic access to the candidate.sub.-- list and the meaning.sub.-- list.
28. Recursive-match-logic (logic description 1.3.3) performs the function of comparing a candidate.sub.-- list with a meaning.sub.-- list and invoking itself again (recursively) as many times as may be necessary to fully explore the meaning-template. Proceeding with logic description steps 1.3.3.A, recursive-match-logic determines that there is only one possible pairing of parts from the two lists (since each list contains only one part). At this point, the m-part is part 102, and the c-part is part 107.
29. Proceeding with logic description steps 1.3.3.B and 1.3.3.C, recursive-match-logic applies get-parts-logic to the m-part (part 102) to build a "meaning.sub.-- grandchildren" list consisting of part 103.
31. Since these two parts match (their type, style and text properties are identical), recursive-match-logic (in accordance with step 1.3.3.E) now applies get-parts-logic to the c-part (part 107) to build a list of "candidate.sub.-- grandchildren" (here consisting solely of part 108).
32. Advancing to step 1.3.3.F, recursive-match-logic determines that the meaning.sub.-- grandchildren list is not empty and so invokes itself, passing both the meaning.sub.-- grandchildren list and the candidate.sub.-- grandchildren list to the new instance of recursive-match-logic. While discussing the operation of this new instance, these two lists will be referred to as its meaning.sub.-- list and candidate list.
34. Proceeding with steps 1.3.3.B and 1.3.3.C, get-parts-logic is applied to the m-part (part 103) to build a meaning.sub.-- grandchildren list. Since part 103 has no properties which refer to un-matched parts, this list is empty.
38. Step 1.3.3.I has no effect since the candidate.sub.-- list is exhausted so, at step 1.3.3.J this instance of recursive-match-logic exits, reporting a match and returning an empty boundary-list.
55. When connector 130 is matched with part 141 as part of the cluster matching process, get-parts-logic is invoked in order to form the candidates.sub.-- list and candidate.sub.-- grandchildren lists used as part of the recursive matching process. As described in logic step 1.3.4.C, both the source and target properties of connector 130 will be examined. If the text property of the part referenced by a connector's source or target property does not begin with "**" (the usual case), then this part itself is added to the list being built by get-parts-logic. However, according to step 1.3.4.C, whenever such text does start with "**", additional work is performed. Connector 130's source property points at part 129 whose text property starts with "**". So, at step 1.3.4.C in get-parts-logic, when part 129 is being examined to see if it should be added to the list, it will be noticed that its text starts with "**" and a part-substitution will be performed.
61. After parts 150 and 160 are matched, cluster-match-logic will generate a candidates.sub.-- list consisting of parts 151, 153 and 154 and a meanings.sub.-- list consisting of parts 161, 163 and 165 which will be given to recursive-match-logic to see if matches for all the parts in the meanings.sub.-- list can be found. The logic flow through recursive-match-logic has been described before. But considering the handling of part 151, for instance, it will be found to match-up only with part 163. This will cause a new instance of recursive-match-logic to be activated on a candidates.sub.-- list consisting only of part 152 and a meanings.sub.-- list consisting only of part 164. When match-text-logic is applied to these parts, it will recognize that both the m-part and c-part have text properties which start with "**". As described in logic step 1.3.2.A, a new circumstance-item will be constructed in which the "actual-" fields are copied over from the circumstance-item built in step 53. The new circumstance-item will be:
______________________________________if meaning.sub.-- pointer is null then /* first-time */result = find("start", BE);else result =meaning.sub.-- pointer.definition.sub.-- cluster.primary.sub.-- part;return result;______________________________________
______________________________________loop {if working.sub.-- pool is empty then terminate MA.sub.-- process;candidate.sub.-- part = remove(working.sub.-- pool);if candidate.sub.-- part is inthis.sub.-- context.already.sub.-- matched.sub.-- list thencontinue; /* loop back to try another part */until (candidate.sub.-- part.style is solid orcandidate.sub.-- part.type is box);return candidate.sub.-- part;______________________________________
______________________________________this.sub.-- context.curr.sub.-- meaning =  head.sub.-- of(this.sub.-- context.meanings.sub.-- list);______________________________________
______________________________________this.sub.-- context.curr.sub.-- meaning =this.sub.-- context.curr.sub.-- meaning.next.sub.-- meaning;______________________________________
1.3.1. Cluster-match-logic: This logic is given a reference to the primary-part of a meaning-template and a reference to the current candidate-part. Invoke the match-parts-logic to check for a match between the meaning and candidate parts in the current context. If these two parts do NOT match, invoke the get-parts-logic on the candidate part and return the resulting boundary-list along with a report that no match exists. If these parts match, invoke the get-parts-logic to build a "candidate.sub.-- list" consisting of parts referenced by the candidate, excluding parts previously matched in this instance of meaning analysis. Mark the meaning and candidate parts as already-matched in this instance of meaning analysis. Invoke the get-parts-logic to build a "meanings.sub.-- list" consisting of parts referenced by the meaning part. Invoke the recursive-match-logic to see if each part in the meanings.sub.-- list has a corresponding part in the candidate.sub.-- list. If the recursive-match-logic reports a match, exit and report a MATCH and return a "boundary.sub.-- list" of un-matched parts. If a match is not indicated, exit and report NO MATCH. Appendix A contains a pseudo-code representation for cluster-match-logic.
______________________________________Formal-String:      &amp;lt;the text of the meaning token&amp;gt;Actual-String:      &amp;lt;the associated string, if any&amp;gt;Actual-Part:      &amp;lt;the associated part, if any&amp;gt;Actual-Context:      &amp;lt;the context in which the match occurred&amp;gt;______________________________________
1.3.3. Recursive-match-logic: compares a meanings.sub.-- list with a candidate.sub.-- list as follows:
A. examine each possible pairing of an m-part from the meanings.sub.-- list and a c-part from the candidate list.
C. apply the get-parts-logic to the m-part to build a list of "meaning.sub.-- grandchildren",
E. if they DO NOT match, put the c-part on a list of unmatched c-parts, pick another c-part and continue with step D. (If all c-parts have been examined, a match is not possible--exit this invocation of recursive-match-logic, reporting NO MATCH). If step D resulted in a special match, continue processing with step H. Otherwise, step D must have resulted in an ordinary match, so apply the get-parts-logic to the c-part in order to build a list of "candidate.sub.-- grandchildren".
F. if the list of meaning.sub.-- grandchildren is not empty, invoke the recursive-match-logic on the meaning.sub.-- grandchildren and candidate.sub.-- grandchildren lists and save the boundary.sub.-- list that was generated. If the list of meaning.sub.-- grandchildren is empty, apply the get-parts-logic to the c-part in order to build a boundary.sub.-- list. Exclude dashed-connectors from this list.
G. add any parts in the boundary.sub.-- list build in step F to the result.sub.-- list being maintained for this invocation of the recursive-match-logic.
H. move all parts in the list of unmatched c-parts back onto the candidate.sub.-- list (this will allow them to be paired with other parts from the meanings.sub.-- list). Advance to the next pair of m-parts and c-parts, and continue with step C. When all m-parts have been matched, continue with step I.
I. add any c-parts that remain on the candidate.sub.-- list to the result.sub.-- list except for: (i) any dashed-connectors or (ii) solid-connectors whose target property references a part in the candidate-cluster explored so far.
J. exit, report a MATCH, and return the result.sub.-- list as the boundary.sub.-- list computed by this invocation of recursive-match-logic. Appendix C contains a pseudo-code representation for Recursive-match-logic.
The example has described a means of specifying the definition-context component for a meaning. In the example, the text property of the meaning-triangle is used to specify the name of the context that is to be used as the definition-context. The sole purpose of a meaning's definition-context component is to identify the context that will be used by the meaning analysis procedure when evaluating the individual parts which make up the definition-cluster. The definition-context field is one way to provide the system with the ability to perform a "context-switch". Using this method, a context-switch is permitted whenever a new instance of the meaning analysis process is created. An alternative, and somewhat more general, method of providing the ability to change contexts can be achieved by adding this capability to one or more of the primitive-action-logic components used within a system. The existing embodiment uses such a technique. Specifically, the primitive-action-logic component of every context can recognize a text property of "::set.sub.-- context". Whenever primitive-action-logic is applied to a part whose text property equals "::set.sub.-- context" the system will switch to the smallest context which encloses this part. Note that only contexts which occur in the same file as the ::set.sub.-- context part are considered here. If a ::set.sub.-- context is encountered for which no explicitly enclosing context can be found, the global (or default) context is selected and a switch to this context occurs. One consequence of this approach is that the definition-context field of the meaning data structure is not required. Instead, the job of specifying a new context is left to the definition-cluster itself. While this is more burdensome and tedious to describe, it might be considered more flexible because it permits a single definition-cluster to switch to more than one context in the course of its evaluation.
3. The editor's message loop receives the WM.sub.-- KEYUP message for an "R" and passes the information to its function Interp.sub.-- Keystroke (lines 404-406). Interp.sub.-- Keystroke would then post a message to the message loop instructing the message loop to prepare for the creation of a rectangle (lines 873-879). The message loop processes this information by changing the editor's state variable to State.sub.-- Start.sub.-- Create.sub.-- Rectangle (lines 450-452).
6. The message loop receives the WM.sub.-- LBUTTONDOWN message at the particular coordinate of the mouse down and passes the information to its function Interp.sub.-- Left.sub.-- Click (lines 412-414). Due to the state of the editor, start the creation of a rectangle, Interp.sub.-- Left.sub.-- Click will send the message loop an ID.sub.-- RECTANGLE.sub.-- CR message with the current mouse position (lines 795-798). The message loop will allocate a new rectangle object in memory--this will call the rectangle's constructor which will initialize the rectangle's draw pens, the shape tag, the file and shape handles, the center, left upper and right lower points and the context flag (lines 201-205)--set the state to State.sub.-- Create.sub.-- Rectangle and set the current shape to the newly allocated rectangle (lines 454-476).
9. The message loop receives the WM.sub.-- MOUSEMOVE message at the particular coordinate of the mouse move and passes the information to its function Interp.sub.-- Mouse.sub.-- Move (lines 420-422). Interp.sub.-- Mouse.sub.-- Move will send the message loop an ID.sub.-- RECTANGLE.sub.-- CR with the new mouse position (lines 701-703). The message loop will adjust the right lower corner of the rectangle with a call to Move.sub.-- To (lines 454-476). Move.sub.-- To will erase the current image that is displayed, adjust the center, left upper and right lower points appropriately, redraw the image on the screen and notify any properties that might be affected by the movement (lines 223-225).
13. The message loop receives the WM.sub.-- LBUTTONUP message at the particular coordinate of the mouse up and passes the information to its function Interp-Left.sub.-- Up (lines 424-426). Due to the state of the editor, create a rectangle, Interp.sub.-- Left.sub.-- Up will send the message loop an ID..sub.-- RECTANGLE.sub.-- CR message with the current mouse position (lines 672-673). The message loop will adjust the rectangle as described in step 9 (lines 454-476). Upon return from the sent message, Interp.sub.-- Left.sub.-- Up will add the new rectangle to the library and update the editors state to shape selected (lines 674-676). The Add.sub.-- Ref function will actually place this new rectangle in the display list of the appropriate file record, add any new properties to the property list of the appropriate file record, assign appropriate persistent file and shape handles to the shape and will make sure that any necessary property manipulations required by the addition of the new shape are performed (lines 259-261).
Patent CitationsCited PatentFiling datePublication dateApplicantTitleUS4628435 *Feb 9, 1984Dec 9, 1986Hitachi, Ltd.Facilities control methodUS4754409 *Jun 26, 1985Jun 28, 1988International Business Machines CorporationMethod for dynamically collecting current data from specified external processes and procedures for use in an expert systemUS4881178 *May 7, 1987Nov 14, 1989The Regents Of The University Of MichiganMethod of controlling a classifier systemUS4922432 *Jan 13, 1988May 1, 1990International Chip CorporationKnowledge based method and apparatus for designing integrated circuits using functional specificationsUS5195029 *Jul 20, 1988Mar 16, 1993Kabushiki Kaisha Komatsu SeisakushoControl unit having an inference functionUS5267346 *Nov 14, 1991Nov 30, 1993Fujitsu LimitedCombination problem solving apparatusUS5293556 *Jul 29, 1991Mar 8, 1994Storage Technology CorporationKnowledge based field replaceable unit managementUS5321620 *Sep 7, 1993Jun 14, 1994Matsushita Electric Industrial Co., Ltd.Inference planning system* Cited by examinerReferenced byCiting PatentFiling datePublication dateApplicantTitleUS5574898 *Jan 8, 1993Nov 12, 1996Atria Software, Inc.Dynamic software version auditor which monitors a process to provide a list of objects that are accessedUS5608894 *Oct 19, 1994Mar 4, 1997Fujitsu LimitedExecution control systemUS5675802 *Mar 31, 1995Oct 7, 1997Pure Atria CorporationVersion control system for geographically distributed software developmentUS6167391 *Mar 19, 1998Dec 26, 2000Lawrence Technologies, LlcArchitecture for corob based computing systemUS6192374Oct 10, 1998Feb 20, 2001Lawrence Technologies, LlcEfficient implementations of constructs such as feature tablesUS6591405 *Nov 28, 2000Jul 8, 2003Timbre Technologies, Inc.Clustering for data compressionUS6684259 *Oct 11, 1995Jan 27, 2004Citrix Systems, Inc.Method for providing user global object name space in a multi-user operating systemUS6947913Aug 23, 2001Sep 20, 2005Lawrence Technologies, LlcSystems and methods for generating string correlithm objectsUS7031969Feb 20, 2002Apr 18, 2006Lawrence Technologies, LlcSystem and method for identifying relationships between database recordsUS7194743May 1, 2001Mar 20, 2007Citrix Systems, Inc.Methods and apparatus for communicating changes between a user interface and an executing application using property pathsUS7246129Aug 1, 2005Jul 17, 2007Lawrence P NickSystem and method for identifying relationships between database recordsUS7346842Nov 2, 2000Mar 18, 2008Citrix Systems, Inc.Methods and apparatus for incorporating a partial page on a clientUS7349928Jan 13, 2006Mar 25, 2008Syngence CorporationSystem and method for identifying relationships between database recordsUS7596593Jul 18, 2005Sep 29, 2009Citrix Systems, LlcMethods and apparatus for efficiently transmitting interactive application data between a client and server using markup languageUS7873965Dec 1, 2006Jan 18, 2011Citrix Systems, Inc.Methods and apparatus for communicating changes between a user-interface and an executing application, using property pathsUS8050954 *Apr 25, 2003Nov 1, 2011Hewlett-Packard Development Company, L.P.Method and system for automated meeting schedulingUS8161472Feb 27, 2008Apr 17, 2012Citrix Systems, Inc.Methods and apparatus for incorporating a partial page on a clientWO2002048746A2 *Dec 13, 2001Jun 20, 2002Timbre Tech IncSystem and method for grating profile classification* Cited by examinerClassifications U.S. Classification1/1, 706/45, 706/904, 707/999.104, 707/999.107International ClassificationG05B19/418Cooperative ClassificationY10S707/99945, Y10S706/904, Y10S707/99948, G05B2219/34262, G05B2219/34261, G05B19/41865, G05B2219/32011European ClassificationG05B19/418PLegal EventsDateCodeEventDescriptionMar 27, 2007FPExpired due to failure to pay maintenance feeEffective date: 20070131Jan 31, 2007LAPSLapse for failure to pay maintenance feesAug 16, 2006REMIMaintenance fee reminder mailedMay 30, 2002FPAYFee paymentYear of fee payment: 8Mar 13, 2002ASAssignmentOwner name: ADAPSYS, INC., CALIFORNIAFree format text: CERTIFICATE OF RESTORATION AND REVIVAL OF CERTICATE OF INCORPORATION;ASSIGNOR:ADAPSYS, INC.;REEL/FRAME:012683/0304Effective date: 20011030Owner name: ADAPSYS, INC. SUITE 202 2611 SOUTH HIGHWAY 101 CAROwner name: ADAPSYS, INC. SUITE 202 2611 SOUTH HIGHWAY 101CARDFree format text: CERTIFICATE OF RESTORATION AND REVIVAL OF CERTICATE OF INCORPORATION;ASSIGNOR:ADAPSYS, INC. /AR;REEL/FRAME:012683/0304Mar 23, 1998FPAYFee paymentYear of fee payment: 4Mar 27, 1992ASAssignmentOwner name: ADAPSYS, INC., A CA CORP., CALIFORNIAFree format text: ASSIGNMENT OF ASSIGNORS INTEREST.;ASSIGNORS:MAUDLIN, CRAIG L.;ADLER-SHERMAN, SUSAN L.;REEL/FRAME:006057/0040Effective date: 19920221RotateOriginal ImageGoogle Home - Sitemap - USPTO Bulk Downloads - Privacy Policy - Terms of Service - About Google Patents - Send FeedbackData provided by IFI CLAIMS Patent Services©2012 Google